我收到了一份AppScan安全报告,其中以下代码被标记为“基于DOM的跨站点脚本”:
i !== null && i.errors ? (i.errors[0].Key === "OrderNotFound" ||
i.errors[0].Key === "ShoppingCartModified") && (alert(i.errors[0].Value),
window.location.href = window.location.href.split("#")[0]) :
t([s("GenericErrorMessage")])
但我看不出问题出在哪里。我想知道这是否是误报。这是没有缩小的原始代码
if (jsonResult !== null && jsonResult.errors) {
if (jsonResult.errors[0].Key === "OrderNotFound" ||
jsonResult.errors[0].Key === "ShoppingCartModified") {
alert(jsonResult.errors[0].Value); //the problem is here
window.location.href = window.location.href.split("#")[0]; //or here
}
} else {
//uiErrors is a KnockoutJS observableArray that is
//shown in the page using the text binding avoiding any innerHTML injection.
//res = method that returns an error msg string for a given key.
uiErrors([res("GenericErrorMessage")]);
}
jsonResult 是ajax调用的响应,它具有以下结构:
{
"errors": [
{"Key": "OrderNotFound", "Value": "Your order could not be found."}
]
}
如果未使用任何用户输入创建键和值。它们是服务器代码中的const字符串。
[1 of 1]基于DOM的跨站点脚本
严重性:高
测试类型:应用
易受攻击的网址:https://www.domain.com/scripts/checkout.js
CVE ID:N / A
CWE ID(s):79
补救任务:分析客户端代码并清理其输入源
变体1 of 1 [ID = 1612185601]
请求/响应:
https://www.domain.com/scripts/checkout.js? V = m9is46e_hmcr4gnmuj4o6xssdozcytmn9flbuxtvbmy1:
1:i!== null&&我错了? (i.errors [0] .Key ===“OrderNotFound”|| i.errors [0] .Key ===“ShoppingCartModified”)&& (警报(i.errors [0]。价值), window.location.href = window.location.href.split(“#”)[0]):t([s ( “GenericErrorMessage”)])
回复验证:
N / A
推理:
N / A
CWE ID:
79
答案 0 :(得分:0)
您显示的代码似乎没有任何XSS问题。这是误报,或扫描仪未正确识别问题的位置。
使用完全无法识别的代码时,可能需要在应用程序上重新运行扫描程序,以便获得更精确的位置信息;即使它实际上是误报,这也可以帮助您理解扫描仪的困惑。
答案 1 :(得分:0)
window.location.href = window.location.href.split("#")[0];
上面的代码行导致了您的问题。技术上分裂("#")[0]将删除#character之后的值..但是这里的缓存点是:如果我们在#34;#"之前包括注入怎么办?性格?
protocal:!//domainname.com/details.htm/的 "喷射@#$ XSS" 强> #Helloworld