前端用location.href安全漏洞的问题
代码中有 window.location.href = ${window.location.origin}/#/full-screen
报告检测出安全漏洞
Cross-Site Scripting: DOM
请问这怎么修复啊,我就是需要跳转到指定页面
我需要这么跳转的原因是,我有如下几个模块
www.baidu.com/#/full-screen 假设这是登录页面www.baidu.com/module1/#/home
www.baidu.com/module2/#/home
www.baidu.com/module3/#/home
module1,module2,module3是ngxin路径,每个路径是一个子项目
只有www.baidu.com
是有登录页面的,所以当我在www.baidu.com/module3/#/home
失去登录的时候其实根路径是www.baidu.com/module3
,所以这么跳转window.location.href" title="location.href">location.href = '/#/full-screen'
其实是无法到达www.baidu.com/#/full-screen
的
回答:
这样是不行的window.location.href = ${window.location.origin}/#/full-screen
但是这样是可以的window.location.href = ${origin}/#/full-screen
我感觉应该是location.origin可能被篡改,但是扫描工具不知道origin是个什么鬼东西,所以就可以了
回答:
应该是这里检测到了变量可能被控制的风险,但是如果实在 globalThis 下,这里的 origin 属性应该是只读的,不能被修改,是可以被信任的,但是在一些时候他就不能被信任了。
// 1(function (window) {
console.log(window.location.origin)
})({ location: { origin: 'http://xx.com' } })
// 2
{
let window = { location: { origin: 'http://xx.com' } }
console.log(window.location.origin)
}
根据需要你这里可以改成下面这样:
window.location.href = '/#/full-screen'
回答:
是被什么工具扫描了?
那你写死跳转地址呢?window.location.href = www.baidu.com/#/full-screen
不然就在nginx做401重定向?或者让后端做重定向。
以上是 前端用location.href安全漏洞的问题 的全部内容, 来源链接: utcz.com/p/937517.html