【问题标题】:Spring defaultHtmlEscape doesn't prevent xss attackSpring defaultHtmlEscape 不阻止 xss 攻击
【发布时间】:2015-11-10 05:08:52
【问题描述】:

我想在我的 spring 应用程序中防止 xss 攻击。

我加了

 <context-param>
        <param-name>defaultHtmlEscape</param-name>
        <param-value>true</param-value>
  </context-param>

进入我的 web.xml(我找到了这个解决方案 here

但在我的页面上,我保存名称为 &lt;script&gt;alert(1);&lt;/script&gt; 的内容,并且此脚本在页面刷新后执行。

客户端代码:

$.ajax({
       type: 'POST',
       url: 'setContentName',
       dataType: 'json',
       data: {contentId: id, name: params.value}
});

我做错了什么?

附言

我在刷新后使用 javascript 加载内容

【问题讨论】:

  • 该属性只会影响弹簧表单标签的使用,它不是通用解决方案。
  • 嗯。你能提供一些更笼统的建议吗?
  • 谷歌会给你几个解决方案...
  • 我认为默认情况下是这样。看看这个答案是否可以帮助您了解问题所在:stackoverflow.com/questions/2147958/…

标签: spring xss


【解决方案1】:

我的观点有点争议,但我认为你应该验证并拒绝入站 XSS。您也应该在输出时对其进行转义,但它不应该首先出现在您的数据库中,因为 dbs 是持久的并且通常是跨应用程序的。

https://www.owasp.org/index.php/OWASP_JSON_Sanitizer

在 JSoup 中使用 Hibernate Validator(您不需要使用 Hibernate ORM)来避免数据库中的 XSS:

Foo.java:

@Entity
class Foo {

  @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
  private String name;

  ...
}

FooController.java:

@Controller
public class FooController {

  @RequestMapping(method=POST)
  String submit(@Validated Foo foo) {
     ...
  }

}

pom.xml:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.2.Final</version>
    </dependency>

    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.8.1</version>
    </dependency>

查看Adding additonal Security to Website了解更多反XSS措施

【讨论】:

    【解决方案2】:

    我为此目的使用 JSTL。在jsp页面中包含c前缀,

    &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;

    对于你要显示的值

    &lt;c:out value=${someVar} escapeXml="true" /&gt;

    在这种情况下设置属性excapeXml="true"是可选的,因为它的默认值为true

    Oracle Documentation

    【讨论】:

    • 这并不能防止 XSS 攻击内容在您的数据库中结束,这至少是 op 尝试完成的。因此,我认为这是一个不完整且可能具有误导性/危险的答案。
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多