Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过location.replace替换哈希是否认为有害?_Javascript_Security_Xss - Fatal编程技术网

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就能做到这一点?