javascript - JavaScript 中可能存在的 XSS 攻击

标签 javascript dom xss fortify

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/

相关文章:

javascript - 删除数组索引的原型(prototype)也会删除数组索引

javascript - getElementById() 为空?

javascript - 添加加载后调整 iframe 的大小

javascript - 通过 javascript 函数选择选择的选项

python - 我如何在 Django/Python 中确保所见即所得输入 HTML 的安全性?

java - 如何清理 Java 中的 HTML 代码以防止 XSS 攻击?

javascript - 用 Regex 替换方法 - 意外的输出日志记录匹配 $& 和 Group $1

javascript - 使用 jquery 将小拉丁字母自动递增到 html 段落

php - 使用 PHP 简单 HTML DOM 解析器获取注释

jquery - Zend Framework、SSL 路由、Fancybox 和 XSS 问题