JavaScriptでインジェクションリスクがある関数/機能など
Webブラウザに対するJavaScriptコードのインジェクションは
- サーバー側のコードが原因(サーバー側のPHP、Ruby、Python、JavaScriptが原因)
- クライアント側のコードが原因(クライアント側のJavaScriptが原因)
- サーバーとクライアント(上記の両方)
で起きる可能性があります。ここでは主にクライアント側が関係するケースで注意しなければならない箇所を紹介します。
Webブラウザに対するJavaScriptコードのインジェクションは
で起きる可能性があります。ここでは主にクライアント側が関係するケースで注意しなければならない箇所を紹介します。
いろいろなコンテクスト用のエスケープ方法を書いてきましたが、HTMLコンテクスト用のエスケープ方法エントリは古いままでした。今のPHPのHTMLエスケープを紹介します。
参考:他のエスケープ方法は以下のエントリを参照してください。
以前にJavaScript文字列のエスケープ関数を紹介しました。試しにPhalconのZephirで書いてみました。
JavaScriptの文字列をエスケープのエントリでJavaScript文字列をエスケープ後に直接出力するより、DOMから取得してはどうか?という提案があったのでエントリを作成しました。
JavaScript文字列のエスケープの解説というか補足です。
サーバー側のプログラムでJavaScriptの文字列にデータを出力するケースはよくあります。このような場合、エスケープ処理を行うことが必須です。
JavaScript文字リテラルは次のように定義されています。(ECMAScript 5.1)