2012-02-15 54 views
17

Hiện tại tôi đang tìm kiếm khả năng bao gồm mã thông báo CRSF trong biểu mẫu Spring MVC và Spring Security. Giải pháp đơn giản nhất bao gồm các servlet (Spring Security + Spring MVC) và cho phép hiển thị và đánh giá các thẻ CSRF là gì?Mùa xuân 3.1 MVC, Bảo mật mùa xuân 3.1 - Mã thông báo CSRF

Tôi ngạc nhiên rằng cơ chế cơ bản này không có sẵn trong ngăn xếp Springs. (mà tôi xem xét cơ bản cho mọi khung ứng dụng web)

PS: Tôi đã xem xét HDIV nhưng không thể tìm thấy giải pháp để sử dụng nó với Spring Security. (ví dụ: biểu mẫu đăng nhập được Spring MVC trả về và yêu cầu đăng nhập được Spring Security xử lý)

+0

Bạn là đúng, mùa xuân không có hỗ trợ đó. Nhưng câu hỏi là gì? – Ralph

+0

Ok. Một dấu chấm hỏi đã bị mất tích. Tôi xin lôi. Có thư viện bao gồm cả Spring Security + Spring MVC có bảo vệ CSRF không? Hay là đủ để bao gồm Spring MVC vì CSRF chỉ có hại khi người dùng được xác thực? –

Trả lời

23

Xuân 3.1 giới thiệu một giao diện mới có tên RequestDataValueProcessor. Sử dụng giao diện này, bạn có thể dễ dàng (và tự động - mà không có bất kỳ thay đổi nào đối với JSP hoặc bộ điều khiển!) Đăng ký mã thông báo CSRF tới các biểu mẫu HTTP. Bạn có thể thấy một ví dụ chi tiết trong here, nó cũng đề cập đến mã mẫu trên github (vì vậy bạn chỉ có thể lấy nó từ đó và sử dụng nó trong ứng dụng của bạn).

8

CẬP NHẬT (tháng 1 năm 2014): Spring Security 3.2 có triển khai CSRF-Token.


Đối với Xuân An < = 3.1:

Vì CSRF đã lưu ý để làm với mùa xuân bảo mật của (Authentication & Authorization) cả hai có thể được thực hiện độc lập với nhau.

Có một số triển khai CRSF dựa trên Bộ lọc. Ví dụ có một chiếc được vận chuyển với Tomcat 7, và Tomcat 6.0.something

Khi tôi cố gắng sử dụng chúng (vào mùa hè 2011), tôi không cảm thấy nó hoạt động tốt. Vì vậy, tôi đã tự thực hiện.

EDIT (April 2012): Thực hiện tôi làm việc với Spring 3.0, nếu bạn đang sử dụng Spring 3.1, sau đó có một cái nhìn tại Eyal Lupu's answer và ông Blog nó sử dụng một số mùa xuân 3,1 tính năng để xử lý bộ lọc được dễ dàng hơn.

Tôi chưa công bố công khai cho đến bây giờ (không có thời gian). Nhưng bạn sẽ. Bạn có thể tải nó (đây là lần đầu tiên tôi sử dụng 4shared.com, tôi hy vọng nó hoạt động):

Hạn chế thực hiện của tôi là, những gì bạn cần để thêm mã thông báo rõ ràng vào mọi biểu mẫu gửi POST, DELETE, PUT.

JSP (x):

xmlns:crsf="http://www.humanfork.de/tags/de/humanfork/security/crsf" 
... 
<form ...> 
    <crsf:hiddenCrsfNonce/> 
    .... 
</form> 

web.xml

<filter> 
    <filter-name>IdempotentCrsfPreventionFilter</filter-name> 
    <filter-class>de.humanfork.security.crsf.IdempotentCsrfPreventionFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>IdempotentCrsfPreventionFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Cảm ơn bạn rất nhiều. –

+2

Lưu ý rằng trong mùa xuân 3.1 chúng ta đã thêm một giao diện gọi là RequestDataValueProcessor. Bạn có thể thực hiện nó và cấu hình nó trong ngữ cảnh ứng dụng để cập nhật mọi biểu mẫu giả định sử dụng các thẻ biểu mẫu JSP Spring. Chúng tôi đã làm điều này để làm cho nó dễ dàng cho các thư viện HDIV để tích hợp với Spring MVC nhưng nó có thể được sử dụng bởi bất cứ ai tất nhiên. –

Các vấn đề liên quan