跨站脚本¶
ID: java/xss
Kind: path-problem
Security severity: 6.1
Severity: error
Precision: high
Tags:
- security
- external/cwe/cwe-079
Query suites:
- java-code-scanning.qls
- java-security-extended.qls
- java-security-and-quality.qls
直接将用户输入(例如,HTTP 请求参数)写入网页,而不先正确地清理输入,就会产生跨站脚本漏洞。
建议¶
为了防止跨站脚本,请考虑在将用户输入写入页面之前使用上下文输出编码/转义,或参考中提到的其他解决方案之一。
示例¶
以下示例显示 page
参数直接写入页面,使网站容易受到跨站脚本的攻击。
public class XSS extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// BAD: a request parameter is written directly to the Servlet response stream
response.getWriter().print(
"The page \"" + request.getParameter("page") + "\" was not found.");
}
}
参考¶
OWASP:XSS(跨站脚本)预防备忘单。
维基百科:跨站脚本。
常见弱点枚举:CWE-79。