エスケープとは?
状態:-
閲覧数:2,694
投稿日:2010-11-02
更新日:2018-04-26
表記
英語
・escape
サニタイジングするための手段の一つ
プログラム上使用出来ない記号、特殊文字を適切な文字列に置換する
・そのままでは表現できない文字を別の表現に置き換える処理
・スクリプトとして意味を持つ文字を無効化する
・「&」や「>」など特殊文字を一般的な文字列に変換する
・PHPの場合はhtmlspecialchars関数でエスケープ処理
・& → &
・< → <
・> → >
・" → "
・' → '
・文字を削除する処理は含まない
エスケープ処理のタイミング
エスケープ処理のタイミングは入力データのチェック時ではなく、HTMLの生成時(出力時)に行う
こうしておけば、いろんな入力源から入り込んでくるデータを漏れなくエスケープ処理できる
出力する際に気をつけることは?
危険な文字や記号を適宜エスケープ(変換)
A.ブラウザ画面出力
B.データベース出力
C.シェル出力
1.ブラウザ画面出力
1.ブラウザ画面出力
クロスサイト・スクリプティング対策(HTMLエスケープ)
実施タイミング
・HTML生成時
htmlspecialchars()
str_replace()
strip_tags()
2.データベース出力
2.データベース出力
SQLインジェクション対策
・SQL特殊文字のエスケープ
※関数を利用する場合、エスケ-プするべき文字はデータベースごとに異なっているため、それぞれに対応するエスケープ関数を使う必要がある
addslashes($string)
・PostgreSQL,Oracleなど
mysql_real_escape_string($string)
・MySQL
sqlite_escape_string($string)
・SQLite
プリペアード・ステートメント