Javascript 通过location.replace替换哈希是否认为有害?
在我遇到的应用程序中,哈希替换是通过以下方式完成的:Javascript 通过location.replace替换哈希是否认为有害?,javascript,security,xss,Javascript,Security,Xss,在我遇到的应用程序中,哈希替换是通过以下方式完成的: var loc = window.location + '' loc = loc.substr(0, loc.indexOf('#')) loc += '#somehash' location.replace(loc) 而不是: location.hash = '#somehash' 现在,DOMinator Pro在我们称之为location时给出了一个“URL重定向JSExecution”警告。将替换为来自window.locatio
var loc = window.location + ''
loc = loc.substr(0, loc.indexOf('#'))
loc += '#somehash'
location.replace(loc)
而不是:
location.hash = '#somehash'
现在,DOMinator Pro在我们称之为location时给出了一个“URL重定向JSExecution”警告。将替换为来自window.location的数据。我现在想知道的是,这是否是一个真正的威胁,因为我想不出一种方法,攻击者可以滥用它来执行URL重定向攻击
这是一个真实的攻击向量,还是一个假阳性?
< p>我会说这是一个假阳性攻击向量,根据已知的方法,注入网站是通过在你的URL栏中添加一个“恶意”代码,但是你的函数忽略了这个“碎片”,所以,没有任何代码被粘贴在网站上。 < P>我会说这是一个攻击向量攻击向量,唯一已知的注入网站的方法是在你的URL栏中添加“恶意”代码,但是你的函数忽略了该片段,所以没有代码被粘贴在网站上。虽然我想不出一个方法,它不能用于你的情况
然而,建议的代码显然更清晰,更不容易出错,因此更安全
如果您使用slice
方法而不是substr
,我可以设计一个示例攻击。应该没什么区别吧?然后使用位置http://example.com
(无尾随斜杠)。如果你能用
loc = loc.slice(0, loc.indexOf('#'));
然后您将在http://example.co#somehash,可能是攻击者注册的。 < P>有一个攻击向量,虽然我想不出它在你的情况下不能使用的方式。< /P>
然而,建议的代码显然更清晰,更不容易出错,因此更安全
如果您使用slice
方法而不是substr
,我可以设计一个示例攻击。应该没什么区别吧?然后使用位置http://example.com
(无尾随斜杠)。如果你能用
loc = loc.slice(0, loc.indexOf('#'));
然后您将在http://example.co#somehash
,这可能是攻击者注册的。我同意其他答案,这可能是误报。不过,像Bergi的slice
示例所示,这类代码很容易出错
在中,此代码可以更简洁地编写为:
var loc=新URL(“somehash”,位置);
位置。更换(loc);
这避免了微妙地弄乱URL操作的任何可能性。我同意其他答案,这可能是一个误报。不过,像Bergi的slice
示例所示,这类代码很容易出错
在中,此代码可以更简洁地编写为:
var loc=新URL(“somehash”,位置);
位置。更换(loc);
这避免了任何微妙地扰乱URL操作的可能性。如果攻击者能够影响窗口.位置的值,那么您可能会遇到问题。好的,是的,但是攻击者有没有办法不使用额外的XSS就可以做到这一点?如果攻击者能够影响窗口.位置的值,那么你可能会遇到问题。嗯,是的,但是攻击者有没有办法不用额外的XSS就能做到这一点?