htmlspecialchars / htmlentities / addslashes / mysql_real_escape_string / mysqli_real_escape_string

セキュリティ

結論

 状態:-  閲覧数:3,086  投稿日: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

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

htmlspecialchars


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

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

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

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

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

addslashes

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

addslashes


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

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


mysql_real_escape_string

 閲覧数:728 投稿日: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

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

mysqli::real_escape_string


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

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

strip_tags

 閲覧数:611 投稿日: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インジェクション

入力 フィルタリング

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



週間人気ページランキング / 4-13 → 4-19
順位 ページタイトル抜粋 アクセス数
1 Warning: Division by zero | Warning(エラーメッセージ) 26
2 PHPで定数を定義する方法は2種類ある / 配列定数の定義 5
3 Warning: PDO::query(): LOAD DATA LOCAL INFILE forbidden | Warning(エラーメッセージ) 4
3 コード例 … 「例外処理」はネストすることができる 4
3 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 4
4 Fatal error: require_once(): Failed opening required 'PEAR.php' | Fatal error(エラーメッセージ) 3
4 Warning: strlen() expects parameter 1 to be string, array given in ○○.php on line △△ | Warning(エラーメッセージ) 3
4 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'カラム名' cannot be null | Fatal error(エラーメッセージ) 3
5 PDO | データベース関連 2
5 HTTP_VIA | 環境変数 2
5 ブラウザを閉じたらセッションデータはどうなるの? | セッション 2
5 PHP用語 2
5 curl で Cookie を使用する 2
5 ブラウザを閉じたらセッションデータはどうなるの? | セッション 2
5 syntax error | エラーメッセージ 2
5 parse_url( ) | 関数 2
5 popen | ファイルシステム (関数) 2
6 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in ○○.php on line △△ | Warning(エラーメッセージ) 1
6 Parse error: syntax error, unexpected $end in ○○.php on line △△ | Parse error(エラーメッセージ) 1
6 Fatal error: Uncaught exception 'ImagickException' with message 'WriteBlob Failed | エラーメッセージ 1
2025/4/20 1:01 更新