我们的一位客户在我们的应用程序中报告了XSS问题,说我们没有清理请求值。他直接在浏览器中添加了一个脚本,并将其作为警报消息执行。
以下是示例网址:
https://domain.com?tool=param1&toolName=param2&category=param3&locale=param4¤cy=HH&theme=Theme"/><script>alert(1)</script>
在上面的URL中,最后脚本标记添加了警告消息。这是测试XSS攻击的正确方法吗?为什么他必须直接修改URL并测试它。
如果这是正确的,我如何通过添加一些客户端脚本来解决问题。服务器端框架是Spring MVC。
我可以使用c:out tage来防止这种攻击吗?我正在使用JSP页面和JSTL tage。
答案 0 :(得分:0)
不确定XSS,但如果您将dom
元素指定为html
直接从您的查询字符串(或未经验证的文本框)读取的值,则可能会发生这种情况。你可以只编码url或url参数:
var param = encodeURIComponent(paramFromQueryString);
答案 1 :(得分:-1)
您可以通过chartOptions['data']['rows'][0] = ["0-1","2-3","4-5",
"6 ", "7 "]; // Spaces appended to these
chartOptions['data']["groups"] = [["0-1","2-3","4-5","6 ", "7 "]];
标题来解决问题 - 请参阅https://content-security-policy.com/并且未启用`script-src directive'unsafe-inline'和'unsafe-eval'。这将是一个快速的工作。
但是,您应该尝试删除该查询字符串的注入到页面中而不使用html转义整个内容。如果没有服务器呈现的代码,则很难建议需要更改的内容。