发布后忽略基本标记

时间:2012-02-23 23:37:20

标签: html post redirect xss base-tag

在Chrome上我发布包含域名的数据后发现错误Refused to execute a JavaScript script. Source code of script found within request.(另请注意,任何一页都缺少javascript)。

badpage1.html

<form action="/badpage2.html" method="post">
<input type="hidden" name="name" value="href=%22http://www.w3.org/%22"/>
<input type="submit" name="submit"/>
</form>

badpage2.html

<!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>标记。

1 个答案:

答案 0 :(得分:3)

我发现由于受到保护,我可以在正在搞砸的页面上发送自定义HTTP标头X-XSS-Protection

我将以下代码用于我的PHP解决方案:

header( "X-XSS-Protection: 0" );