是否为 DOM XSS 误报
Is it a false postive for DOM XSS
我使用 IBM AppScan 扫描我的网站。其中一个漏洞被发现称为 "DOM XSS"。经过调查,我怀疑这可能是误报。有谁知道是否可以根据我的以下代码对其进行注入?
它看起来像是一个子域解析例程,将 document.domain
设置为此值 。
例如如果当前 URL 是 http://www.example.com/
那么 document.domain
设置为 example.com
.
这似乎是误报,因为即使使用不受信任的输入来设置域以放松同源策略限制,设置 document.domain
仅对当前域的子域有效,因此很难将其操纵成恶意的东西。
也就是说,如果 example.edu
将它们的 document.domain
设置为 example.com
那么浏览器将不会接受,因为域本身不匹配并且浏览器将不允许任何内容在尝试 com
的情况下设置为顶级域。
解析 href 并不是执行此操作的最佳方法 - location object 中还有其他可用属性,例如 .hostname
。如果解析例程中存在缺陷,则可以通过在 URL:
中的其他位置提交主机名来欺骗代码
http://www.example.com?injectedHostname=http://www.example.org
话虽如此,我看不出您当前的函数实现可能会被滥用。
这不是传统的 HTML/script 注入 DOM,因此它不是人们通常所说的“DOM XSS”,但 AppScan 已检测到它,因为数据正在从不受信任的来源(文档 URL)到危险的接收器(安全敏感的 document.domain
属性),这通常是一件冒险的事情。
如果攻击者可以影响 document.domain
确实有可能允许跨源脚本,尽管它必须来自相邻域(因为 document.domain
不能设置为例如,TLD),这样可以稍微限制损害。
如果您必须从浏览器地址自动设置document.domain
,那么为了安全地进行设置,您应该(a)直接阅读location.hostname
尝试拆分 location.href
,并且 (b) 确保应用程序的部署使其仅响应其真实主机名。如果攻击者将他们自己的 DNS 指向您服务器的 IP 地址,则应用程序不应出现。完成后,您仍然需要忽略警告。
如果可能,将 document.domain
设置为不是来自输入的特定静态值(例如从配置中获取)将是一个更好的方法。
我使用 IBM AppScan 扫描我的网站。其中一个漏洞被发现称为 "DOM XSS"。经过调查,我怀疑这可能是误报。有谁知道是否可以根据我的以下代码对其进行注入?
它看起来像是一个子域解析例程,将 document.domain
设置为此值
例如如果当前 URL 是 http://www.example.com/
那么 document.domain
设置为 example.com
.
这似乎是误报,因为即使使用不受信任的输入来设置域以放松同源策略限制,设置 document.domain
仅对当前域的子域有效,因此很难将其操纵成恶意的东西。
也就是说,如果 example.edu
将它们的 document.domain
设置为 example.com
那么浏览器将不会接受,因为域本身不匹配并且浏览器将不允许任何内容在尝试 com
的情况下设置为顶级域。
解析 href 并不是执行此操作的最佳方法 - location object 中还有其他可用属性,例如 .hostname
。如果解析例程中存在缺陷,则可以通过在 URL:
http://www.example.com?injectedHostname=http://www.example.org
话虽如此,我看不出您当前的函数实现可能会被滥用。
这不是传统的 HTML/script 注入 DOM,因此它不是人们通常所说的“DOM XSS”,但 AppScan 已检测到它,因为数据正在从不受信任的来源(文档 URL)到危险的接收器(安全敏感的 document.domain
属性),这通常是一件冒险的事情。
如果攻击者可以影响 document.domain
确实有可能允许跨源脚本,尽管它必须来自相邻域(因为 document.domain
不能设置为例如,TLD),这样可以稍微限制损害。
如果您必须从浏览器地址自动设置document.domain
,那么为了安全地进行设置,您应该(a)直接阅读location.hostname
尝试拆分 location.href
,并且 (b) 确保应用程序的部署使其仅响应其真实主机名。如果攻击者将他们自己的 DNS 指向您服务器的 IP 地址,则应用程序不应出现。完成后,您仍然需要忽略警告。
如果可能,将 document.domain
设置为不是来自输入的特定静态值(例如从配置中获取)将是一个更好的方法。