客户端跨站点脚本¶
ID: js/xss
Kind: path-problem
Security severity: 7.8
Severity: error
Precision: high
Tags:
- security
- external/cwe/cwe-079
- external/cwe/cwe-116
Query suites:
- javascript-code-scanning.qls
- javascript-security-extended.qls
- javascript-security-and-quality.qls
在没有对输入进行适当清理的情况下,直接将用户输入(例如,URL 查询参数)写入网页,会导致跨站点脚本漏洞。
这种漏洞也称为基于 DOM 的跨站点脚本,以将其与其他类型的跨站点脚本区分开来。
建议¶
为了防止跨站点脚本,请考虑在将用户输入写入页面之前使用上下文输出编码/转义,或者使用其他解决方案,这些解决方案在参考中有所提及。
示例¶
以下示例显示了将页面 URL 的一部分直接写入文档,这使得网站容易受到跨站点脚本攻击。
function setLanguageOptions() {
var href = document.location.href,
deflt = href.substring(href.indexOf("default=")+8);
document.write("<OPTION value=1>"+deflt+"</OPTION>");
document.write("<OPTION value=2>English</OPTION>");
}
参考¶
OWASP:基于 DOM 的 XSS 防御秘籍。
OWASP:XSS(跨站点脚本)防御秘籍。
OWASP 基于 DOM 的 XSS。
OWASP 跨站点脚本类型。
维基百科:跨站点脚本。
通用弱点枚举:CWE-79。
通用弱点枚举:CWE-116。