PHP文字列のエスケープ
PHP文字列をテキストとして出力したい場合もあります。PHPの文字列型はバイナリセーフなのでどのようなデータでも保存可能ですが、プログラム中でPHP変数をPHPのテキスト(リテラル)として出力するにはaddslashes()によるエスケープ処理が必要です。
【重要】エスケープ/API/バリデーション1は出力先に合った方法でないと意味がないです。一口にHTMLと言っても複数の”コンテクスト”があります。
- JavaScript(識別子、変数など)、CSS、タグ属性名、タグ属性値(URIコンテクストに特に注意。BASE64、JavaScriptを使う場合もある)
があります。
SQLクエリと言っても
- 引数(更にLIKE、正規表現、JSON、XMLなどに別れる)、識別子、SQL語句
などがあります。全てのテキストインターフェースにコンテクスト2があります。
それぞれの”コンテクスト”に適切なエスケープ/API/バリデーションを利用しなければ意味がありません。