使用window.location.origin是否会导致XSS漏洞?
window.location.origin 是否属于安全例外? 结论先行:绝大多数场景下属于安全例外,只有极少数特殊场景需要额外注意。
为什么它比其他window.location下的属性更安全?
window.location.origin是浏览器实现的只读属性,前端脚本无法对它的值进行修改,它的返回值固定为当前页面加载时的真实源,由协议 + 域名 + 端口三部分严格组成,完全由浏览器的同源策略管控,无法通过URL篡改、XSS注入等常规攻击手段修改取值。- 其他
window.location下的属性(比如href、search、hash、pathname等)都可以被用户手动修改、或者通过恶意跳转、恶意参数带入不可信内容,也支持脚本随意赋值,因此属于不可信输入,需要过滤后才能使用,origin不属于这类情况。
需要注意的例外场景
- 如果你读取的是第三方嵌套iframe的
contentWindow.location.origin,这个值本身是可信的(确实对应iframe加载内容的真实源),但如果直接用这个值做权限校验、拼接敏感业务逻辑,还是可能出现业务逻辑漏洞,需要提前校验是否在你的可信源白名单内。 - 如果你需要兼容IE11及更早期的老旧浏览器,注意这类浏览器对
window.location.origin的实现存在缺陷,部分场景下会返回不符合预期的值,这类场景下建议不要直接依赖该属性,或者额外增加取值校验逻辑。
内容的提问来源于stack exchange,提问作者bitspook
相关产品推荐
相关产品推荐

