在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
转到该图片,则图片将无法显示(基本标记不起作用)。
这是Chrome XSS检测中的错误吗?如果不是,我该如何绕过这个?对发布的数据进行编码只是为了绕过这个过滤器似乎很愚蠢。
编辑:
就我而言,发送的帖子值是更新页面内容的一部分。如果它包含恰好包含<base>
中使用的域名(如本示例所示),则会触发XSS检测,从而禁用<base>
标记。
答案 0 :(得分:3)
我发现由于受到保护,我可以在正在搞砸的页面上发送自定义HTTP标头X-XSS-Protection
。
我将以下代码用于我的PHP解决方案:
header( "X-XSS-Protection: 0" );