我有一个包含以下代码的Web应用程序:
If (window.location.href.indexof("test") != -1) {
window.location.href = document.referrer;
}
如果我在URL中输入?test或其他内容,我可以轻松触发这种情况,但是它只是重定向到自身并本质上是循环……我的问题是我可以通过操纵javascript document.referrer变量来注入xss内容吗?可以轻松更改该值吗?
我试图代理请求并更改http标头,但是javascript似乎没有从http标头中提取值。
还是这种方法完全不好,不应该使用。
答案 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之前执行。