首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.location = window.location易受XSS影响吗?

window.location = window.location易受XSS影响吗?
EN

Stack Overflow用户
提问于 2016-07-17 22:01:36
回答 2查看 21.1K关注 0票数 8

这个问题与代码window.location = window.location有关,它是刷新页面的一种方法,与重定向/其他变量无关。

我的理解如下:

window.location = window.location会导致页面刷新,因为浏览器将导航到用户已经打开的相同位置。

通过DOM操作对该变量进行的任何更改都将导致页面重新加载/加载攻击者页,因此这些行将无法使用更改的值执行,因此不适合跨站点脚本攻击。

是对的吗?

编辑:我真正想问的是,如果有一种方法可以在不导致页面重新加载的情况下更改window.location,那么当进行window.location = window.location调用时,浏览器将被发送到另一个位置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-24 20:26:14

因此,如果我理解你的要求是正确的,这些答案都是不正确的。可以利用window.location来执行xss。您遇到的障碍似乎是,在执行window.location行之后,页面将刷新并跳过有效负载的执行。我假设您可以在window.location右侧的字符串中引入内容,并且输入没有被正确地编码为JavaScript字符串。

例如,如果http://vulnerablewebsite/page?param=derp';alert('xss');var+a+%3d+'生成的代码如下:

代码语言:javascript
复制
<script>
  window.location='derp';alert('xss');var a = '';
</script>

您可以利用字符串连接将分配延迟到window.location,直到执行了有效负载之后。所以,就像:

http://vulnerablewebsite/page?param=derp'+%2B+alert('xss')+%2b+'

将导致执行有效负载的下列代码。

代码语言:javascript
复制
<script>
  window.location='derp' + alert('xss') + '';
</script>

不过,这应该是在安全StackExchange中实现的。

票数 6
EN

Stack Overflow用户

发布于 2016-07-17 22:08:16

这个问题与window.location无关,与您如何处理新上下文中使用的任意数据有关。

如果您从URL获取输入并使用它构建要重定向到的新URL,那么您就会发现问题所在。以经典的重定向页面..。

代码语言:javascript
复制
http://example.com/redirect?url=http%3A%2F%2Fsomethingevil

如果页面上有JavaScript,然后将window.location设置为查询字符串参数url的值,则该页面将转到http://somethingevil

XSS的主要方法是允许查询字符串参数将数据注入页面本身。例如,您可能有一个页面,上面写着“HelloBrad”,其中"Brad“来自名为name的URL参数。现在,假设攻击者将URL设置为name=%3Cscript%20src%3D%22http%3A%2F%2Fexample.com%2Fevil.js%22%3E%3C%2Fscript%3E。如果我只是将name的值直接注入页面,那么我的脚本evil.js将在该页面上运行。如果我正确地转义数据,那么它可以在页面中使用,因为它将被解释为文本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38426351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档