这个JavaScript代码容易受到基于DOM的xss的影响吗?

时间:2018-07-26 19:17:35

标签: javascript dom xss referrer

我有一个包含以下代码的Web应用程序:

If (window.location.href.indexof("test") != -1) {
    window.location.href = document.referrer;
}

如果我在URL中输入?test或其他内容,我可以轻松触发这种情况,但是它只是重定向到自身并本质上是循环……我的问题是我可以通过操纵javascript document.referrer变量来注入xss内容吗?可以轻松更改该值吗?

我试图代理请求并更改http标头,但是javascript似乎没有从http标头中提取值。

还是这种方法完全不好,不应该使用。

1 个答案:

答案 0 :(得分:0)

Trustworhty用户代理将不允许修改引用标头,除非您明确允许他们使用Access-Control-Allow-Headers(基本上不要这样做!)。用户代理可能具有某些功能来防止引用者标头被篡改,但是如果您正确地使用了document.referrer,那么实际上您的方法也应该已经更改了document.referrer(但是,这无关紧要,但是我们稍后会看到)。 / p>

document.referrer = "my new referrer"的值不受简单Object.defineProperty(document, "referrer", {get : function(){ return "my new referrer"; }});的影响,但是易受这段代码def trim_multibyte(string, length): while len(bytes(string, 'utf-8')) > length: string=string[:-1] return string 的攻击。

因此,您不得允许此类代码在相关页面上执行,否则攻击者将控制您的重定向位置。不幸的是,这意味着只有每个使用了全部页面免受XSS攻击的情况下,才能使用此方法。否则,将保证您的重定向代码在任何XSS注入的javascript之前执行。