htmlspecialchars / htmlentities / addslashes / mysql_real_escape_string / mysqli_real_escape_string

セキュリティ

結論

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

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

htmlspecialchars


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

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

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

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

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

addslashes

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

addslashes


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

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


mysql_real_escape_string

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

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

mysqli::real_escape_string


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

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

strip_tags

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

入力 フィルタリング

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



週間人気ページランキング / 12-19 → 12-25
順位 ページタイトル抜粋 アクセス数
1 Notice(エラーメッセージ) カテゴリー 3
1 PHPで定数を定義する方法は2種類ある / 配列定数の定義 3
1 PHP用語 3
1 PHPにおけるメソッドのオーバーライドについて /「引数の数や型は、親クラスのメソッドと完全に一致していなければなりません。」とは具体的にどういう意味ですか? 3
2 Cookie | クッキー 2
2 Fatal error: Uncaught RuntimeException: SplFileObject::__construct(): failed to open stream: Permission denied in | Fatal error(エラーメッセージ) 2
2 インポートするデータを受信できませんでした。ファイル名が送信されていないか、ファイルサイズが PHP の設定で許可された最大値を超えています。FAQ 1.16 をご覧ください | エラーメッセージ 2
2 Warning: strlen() expects parameter 1 to be string, array given in ○○.php on line △△ | Warning(エラーメッセージ) 2
2 Parse error: syntax error, unexpected 'public' (T_PUBLIC) | Parse error(エラーメッセージ) 2
2 オブジェクト関係マッピング | データベース関連 2
2 Fatal error: Uncaught Error: Call to a member function modify() on string | Fatal error(エラーメッセージ) 2
2 http_build_queryとは? / 構文 /パラメータ 2
2 ( ! ) Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined | Fatal error(エラーメッセージ) 2
3 コンストラクタ デストラクタ | クラスとオブジェクト 1
3 php-devel とは? 1
3 型の種類 | 型 1
3 __setメソッド | マジックメソッド(クラスとオブジェクト) 1
3 blurImageメソッド(Imagickクラス) カテゴリー 1
3 T_CONSTANT_ENCAPSED_STRING | エラーメッセージ 1
3 ログイン 1
2025/12/26 1:02 更新