htmlspecialchars / htmlentities / addslashes / mysql_real_escape_string / mysqli_real_escape_string

セキュリティ

結論

 状態:-  閲覧数:3,414  投稿日:2015-11-07  更新日:2018-04-26  
「クロスサイトスクリプティング対策」と「SQLインジェクション対策」では、変換すべき文字や、変換後の文字が異なる
・この2つは全く別物として考える
・原則的にサニタイズはHTML表示時かMySQLのquery発行時にその都度行なう


一覧


htmlspecialchars、htmlentities、addslashes、mysql_real_escape_string、mysqli_real_escape_string
関数 方式 内容 対象数
htmlspecialchars エンコード 特殊文字を HTML エンティティへ変換 5
htmlentities エンコード 全ての HTML 文字エンティティを変換 約100
addslashes エスケープ クォートされるべき文字の前に バックスラッシュを挿入した文字列を返す 4
mysqli_real_escape_string エスケープ SQL 文中で用いる文字列の特殊文字をエスケープ 7
mysqli::real_escape_string エスケープ 接続の現在の文字セットを考慮して、SQL 文で使用する文字列の特殊文字をエスケープ 7
※mysqli::real_escape_string と mysqli_real_escape_string は、引数の数が異なる

htmlspecialchars

 閲覧数:943 投稿日:2015-11-07 更新日:2015-11-14 

htmlspecialchars


掲示板やゲストブックなどでユーザが書きこんだテキストから HTML のマークアップ用文字を取り除く場合
・特殊文字を HTML エンティティへ変換

ENT_NOQUOTES が設定されていない場合
" (ダブルクォート) → "

ENT_QUOTES が設定されている場合
' (シングルクオート) → '

一覧表
読み方 メタ文字 変換後
アンパサンド & &
ダブルクォート " "
シングルクォート ' '
小なり < &lt;
大なり > &gt;

怠った場合に、引き起こされる可能性があるセキュリティリスク
・クロスサイト・スクリプティング

addslashes

 閲覧数:805 投稿日:2015-11-07 更新日:2015-11-12 

addslashes


データベースへの問い合わせなど

一覧表          
読み方 メタ文字 変換後
ダブルクォート " \"
シングルクォート ' \'
バックスラッシュ \ \\
NULL バイト NUL \NUL


mysql_real_escape_string

 閲覧数:878 投稿日:2015-11-07 更新日:2015-11-11 

mysql_real_escape_string


SQL 文中で用いる文字列の特殊文字をエスケープ
・PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除
読み方 メタ文字 変換後
ダブルクォート " \"
シングルクォート ' \'
バックスラッシュ \ \\
NULL バイト \x00 \\x00
改行 \n \\n
カーソルを文頭へ戻す制御コード(Carriage Return) \r \\r
ファイル終端を示す制御コード(End Of File) \x1a \\x1a
怠った場合に、引き起こされる可能性があるセキュリティリスク
・SQLインジェクション

mysqli::real_escape_string

 閲覧数:894 投稿日:2015-11-08 更新日:2015-11-12 

mysqli::real_escape_string


接続の現在の文字セットを考慮して、SQL 文で使用する文字列の特殊文字をエスケープ

怠った場合に、引き起こされる可能性があるセキュリティリスク
・SQLインジェクション

strip_tags

 閲覧数:765 投稿日:2018-04-26 更新日:2018-04-26 

基本的な使い方


$str = '<b>PHP用語</b>';
echo strip_tags($str); //PHP用語


許可するタグを指定
$str = '<div><p><span>PHPデモ</span></p></div>';
echo strip_tags($str); //PHPデモ

//許可するタグを指定
echo strip_tags($str, '<p><span>'); //<p><span>PHPデモ</span></p>


注意事項


結果的にhtmlタグを削除しているだけ
・htmlタグであると判断して削除しているわけではない

<hoge></hoge>を削除する例
$str = '<div><hoge><p><span>PHPデモ</span></p></hoge></div>';
echo strip_tags($str); //PHPデモ

//許可するタグを指定
echo strip_tags($str, '<hoge><p><span>'); //<hoge><p><span>PHPデモ</span></p></hoge>





strip_tags

文字列からHTMLタグを除去
PHP HTMLタグ PHPタグ を除去・削除したい strip_tags() | WEPICKS!


SQLインジェクション

入力 フィルタリング

コメント投稿(ログインが必要)



週間人気ページランキング / 7-17 → 7-23
順位 ページタイトル抜粋 アクセス数
1 PHP用語 6
2 コンストラクタ デストラクタ | クラスとオブジェクト 4
2 マジックメソッド(クラスとオブジェクト) カテゴリー 4
3 ログイン 3
4 Parse error: syntax error, unexpected $end in ○○.php on line △△ | Parse error(エラーメッセージ) 2
4 PHPでcurlを使用するためには?/ 2.オプション設定 / curlでPOST送信 2
4 You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. | Twitter API(エラーメッセージ) 2
4 htmlspecialchars / htmlentities / addslashes / mysql_real_escape_string / mysqli_real_escape_string | セキュリティ 2
4 デフォルト引数 | 関数 2
4 Fatal error: Uncaught Error: Class 'Mecab_Tagger' not found in /var/www/★★.php:☆☆ | Fatal error(エラーメッセージ) 2
4 遭遇例1.存在する間違ったデータベース名を指定 2
4 リファレンス基本操作は3通り 2
5 __setメソッド | マジックメソッド(クラスとオブジェクト) 1
5 P … 子クラスインスタンス生成。親クラス内での$this 1
5 Fatal error: Uncaught RuntimeException: SplFileObject::__construct(): failed to open stream: Permission denied in | Fatal error(エラーメッセージ) 1
5 Fatal error: Uncaught Wrench\Exception\HandshakeException: No accept header receieved on handshake response in ★★★ headless-chromium-php/vendor/wrench/wrench/lib/Wrench/Protocol/Protocol.php | エラーメッセージ 1
5 対応案B.文字列処理ではなく、配列処理を実施 1
5 PHPでどうしてもエラーが画面表示されない時は、HTMLコメントアウトを外してみる | エラーメッセージ 1
5 Fatal error: require_once(): Failed opening required 'PEAR.php' | Fatal error(エラーメッセージ) 1
5 PECLとは? 1
2026/7/24 5:05 更新