Fortify on Demand 向我显示这行代码可能存在 XSS 问题
if (window.location.search != '') {
window.location.href = window.location.href.substr(0,baseurl.length+1)+'currencyCode='+event.getCurrencyCode()+'&'+window.location.href.substr(baseurl.length+1);
} else {
window.location.href = window.location.href.substr(0,baseurl.length)+'?currencyCode='+event.getCurrencyCode()+window.location.href.substr(baseurl.length);
}
我远不是 JavaScript 专家,但我需要修复这段代码。
你能帮忙吗?
最佳答案
我认为 Fortify 发现 event.getCurrencyCode() 可以是任意长度的字符串,并且可能包含跨站点脚本攻击,该攻击可能会将毫无戒心的用户发送到恶意站点,或导致浏览器加载 JavaScript,从而对用户造成不良影响。用户。您可以通过查看 Fortify 的 Audit Workbench 工具中的结果的详细信息选项卡来判断这一点。
假设潜在的恶意数据可能由 event.getCurrencyCode 提供,您需要在事件来源时或在此代码中将此值列入白名单以验证该值。我敢打赌,这个应用程序中货币代码的频谱值相对较小,并且每个值的长度都有限,因此应该可以使用 Javascript 的内置正则表达式功能直接将该值列入白名单。
就目前情况而言,如果事件提供的话,JavaScript 会很乐意在该 URL 中添加一个几乎无限长度的字符串,并且使用 UTF-8 字符集,攻击者可以做很多事情(内联 JavaScript 等)。 )
希望这有帮助。祝你好运。
关于javascript - JavaScript 中可能存在的 XSS 攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24882721/