Chrome ではRefused to execute a JavaScript script. Source code of script found within request.
、ドメイン名を含むデータを投稿した後にエラーが発生します (どちらのページにも JavaScript がないことに注意してください)。
<form action="/badpage2.html" method="post">
<input type="hidden" name="name" value="href=%22http://www.w3.org/%22"/>
<input type="submit" name="submit"/>
</form>
<!DOCTYPE html>
<html>
<head>
<base href="http://www.w3.org/"/>
</head>
<body>
<img src="Icons/w3c_home" alt="">
</body>
</html>
直接アクセスするとbadpage2.html
画像が表示されますが、 経由badpage1.html
でアクセスすると画像は表示されません (base タグは機能しません)。
これは Chrome XSS 検出のバグですか? そうでない場合、どうすればこれをバイパスできますか?このフィルターをバイパスするためだけに、投稿されたデータをエンコードするのはばかげているようです。
編集:
私の場合、送信される投稿値は、ページのコンテンツの一部を更新することです。問題は、(この例のように) で使用されているドメイン名が含まれている場合に発生し、タグ<base>
を無効にする XSS 検出がトリガーされます。<base>