Spring defaultHtmlEscape不会阻止xss攻击

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

我补充说

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

进入我的web.xml(我在这里发现这个灵魂)

但在我的页面上,我使用名称保存内容<script>alert(1);</script>,此脚本在页面刷新后执行。

客户端代码:

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

我怎么了?

PS

我刷新后使用javascript加载内容

分享 改善这个问题
 
 
该属性只会影响弹簧表单标签的使用,不会成为通用解决方案。 -   M. Deinum  Aug 17 '15 at 14:11
 
HM。你能建议一些更普通的东西吗? -   gstackoverflow  Aug 17'15 at 14:13
 
Google会给你几个解决方案... -   M. Deinum  Aug 17 '15 at 14:14
 
我认为默认情况下是这样的。看看这个答案可以帮助你看到什么问题:stackoverflow.com/questions/2147958/... -   cahen  Aug 17 '15 at 14:14

我是一个有争议的意见,但我认为你应该验证和拒绝入站XSS。你也应该输出它,但它不应该在你的数据库中,因为dbs是持久的,通常是交叉应用程序。

请参阅https://www.owasp.org/index.php/OWASP_JSON_Sanitizer

使用Hibernate验证器(您不需要使用Hibernate ORM)与JSoup避免您的数据库中的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>

有关更多的抗XSS措施,请参阅向网站添加附加安全性

分享 改善这个答案
 

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

对于你想显示的价值

<c:out value=${someVar} escapeXml="true" />

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

Oracle文档

原文:http://stackoverflow.com/questions/32052495/spring-defaulthtmlescape-doesnt-prevent-xss-attack


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值