たとえば、ユーザーからの入力が取得され、単純なクライアント側のXSSフィルターに渡されるページがあるとします。このフィルターは、_<
_文字のみを ''に置き換えます。
_in = in.replace(/[<]/g, '');
_
次に、ユーザー入力を_<div>
_タグ内に埋め込むために、入力がJQueryのhtml()
メソッドに渡されます。
この単純なXSSフィルターをバイパスするにはどうすればよいですか?
<
のない単純なHTMLコンテキストでのXSSは 不可能 です。 HTML属性コンテキスト、JavaScriptコンテキストなどで可能です。しかし、単純な<div>
タグでは、<
が必要です。
正規表現をバイパスする方法はありません。文字列からすべての<
文字を常に正しく削除します。
残っている唯一の希望は、jQuery関数.html
が入力(たとえば、デコード値)を安全に処理できず、フィルターをバイパスできることです。しかし、.html
には既知の脆弱性はありません。
以上を踏まえると、ここには脆弱性はないと言えるでしょう。