Sau khi cấu hình Spring Security 3.2, _csrf.token
không bị ràng buộc với một yêu cầu hoặc một đối tượng phiên.
Đây là cấu hình bảo mật mùa xuân:
<http pattern="/login.jsp" security="none"/>
<http>
<intercept-url pattern="/**" access="ROLE_USER"/>
<form-login login-page="/login.jsp"
authentication-failure-url="/login.jsp?error=1"
default-target-url="/index.jsp"/>
<logout/>
<csrf />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="test" password="test" authorities="ROLE_USER/>
</user-service>
</authentication-provider>
</authentication-manager>
Tệp login.jsp
<form name="f" action="${contextPath}/j_spring_security_check" method="post" >
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
<button id="ingresarButton"
name="submit"
type="submit"
class="right"
style="margin-right: 10px;">Ingresar</button>
<span>
<label for="usuario">Usuario :</label>
<input type="text" name="j_username" id="u" class="" value=''/>
</span>
<span>
<label for="clave">Contraseña :</label>
<input type="password"
name="j_password"
id="p"
class=""
onfocus="vc_psfocus = 1;"
value="">
</span>
</form>
Và nó hiển thị html tiếp theo:
<input type="hidden" name="" value="" />
Kết quả là trạng thái HTTP 403:
Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
CẬP NHẬT Sau một số lần gỡ lỗi, đối tượng yêu cầu thoát ra khỏi biểu mẫu đẹp DelegateFilterProxy, nhưng trong dòng 469 của CoyoteAdapter, nó thực thi request.recycle (); sẽ xóa tất cả các thuộc tính ...
Tôi kiểm tra trong Tomcat 6.0.36, 7.0.50 với JDK 1.7.
Tôi không hiểu hành vi này, đúng hơn là có thể xảy ra nếu ai đó chỉ tôi theo hướng của một số cuộc chiến mẫu ứng dụng với Spring Security 3.2 hoạt động với CSRF.
spring-security.xml
) với Spring 4.0.0 RELEASE (GA), Spring Security 3.2.0 RELEASE (GA) (mặc dù nó được tích hợp với Struts 2.3.16. Tôi không cung cấp cho nó một thử với Spring MVC thôi). Tuy nhiên, nó không thành công, khi yêu cầu nhiều phần để tải lên các tệp có trạng thái 403. Tôi đang đấu tranh để tìm giải pháp cho nó.