我希望Spring Security保护我的应用程序免受CSRF攻击: (跨站点请求伪造(CSRF)是一种攻击,迫使最终用户在他们当前正在进行身份验证的Web应用程序上执行不需要的操作.CSRF攻击专门针对状态更改请求,而不是数据被盗,因为攻击者无法看到对伪造请求的响应) 所以我在我的pom.xml中添加了这个
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
但是当我在applicationContext.xml
中添加这段代码时:
<security:global-method-security secured-annotations="enabled" />
<security:http auto-config="true">
<security:csrf/>
<security:intercept-url pattern="/**" access="permitAll" />
</security:http>
<security:authentication-manager/>
和我的JSP上的这段代码:
<form:form...
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form:form>
但是检查生成HTML的源代码是结果(?!?)
<input type="hidden" name="" value="" />
答案 0 :(得分:0)
试试这个,
您可以使用spring seurity标记库以获得更好的清晰度和易用性: 首先包括标签lib。
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
然后进入你的......
<sec:csrfInput/>
而不是
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
它应该有用。
如果我错过了什么,请告诉我,是的
Happy Codings !!!!!!!!!!