【问题标题】:XSS Attack for Modifying the URL修改 URL 的 XSS 攻击
【发布时间】:2016-12-08 09:00:15
【问题描述】:

我们的一位客户报告了我们的应用程序存在 XSS 问题,说我们没有清理请求值。他直接在浏览器中添加了一个脚本,并作为警报消息执行。

这里是示例网址:

https://domain.com?tool=param1&toolName=param2&category=param3&locale=param4&currency=HH&theme=Theme"/><script>alert(1)</script>

在上面的 URL 中,在脚本标签的末尾添加了警告消息。这是测试 XSS 攻击的正确方法吗?为什么他要直接修改网址,测试一下。

如果正确,我如何通过添加一些客户端脚本来解决此问题。服务器端框架是 Spring MVC。

更新:

我可以使用 c:out 标记来防止这种攻击吗?我在其中使用 JSP 页面和 JSTL 标记。

【问题讨论】:

  • 是的,这是一种正确的XSS测试方法
  • 能否使用 c:out 取决于 XSS 发生在哪个上下文中。请参考OWASP XSS预防备忘单:owasp.org/index.php/…

标签: javascript html spring-mvc xss


【解决方案1】:

不确定 XSS,但如果您将直接从查询字符串(或未验证的文本框)读取的值分配给 dom 元素为 html,则可能会发生这种情况。您可以只对 url 或 url 参数进行编码:

var param = encodeURIComponent(paramFromQueryString);

【讨论】:

    【解决方案2】:

    您可以使用 CSP 标头解决问题 - 请参阅 https://content-security-policy.com/ 并且未启用 `script-src 指令'unsafe-inline' 和 'unsafe-eval'。这将是一个快速的工作。

    但是,您应该尝试在页面中删除该查询字符串的注入,而不需要 html 转义整个内容。如果没有服务器正在渲染的代码,就很难建议需要更改的内容。

    【讨论】:

    • 这个问题应该从根本上解决。 CSP 旨在作为一种额外的保护措施,对于许多网站来说,添加 CSP 可能比解决给定问题更难,因为内联脚本已经在使用中。
    • 这将是一个快速的工作。但是你应该尝试删除该查询字符串的注入在答案中解释了......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多