2014-11-17 16 views
8

Tôi đang bối rối. Tôi thấy rằng JSF 2.0 có ngầm bảo vệ CSRF: How JSF 2.0 prevents CSRFCó nên sử dụng <protected-views> để bảo vệ JSF 2.2 CSRF không?

Ở phía bên kia theo bài viết http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html chúng ta nên bổ sung các yếu tố sau đây để các tập tin faces-config.xml với danh sách các trang JSF.

<protected-views> 
    <url-pattern>/csrf_protected_page.xhtml</url-pattern> 
</protected-views> 

Nên sử dụng <protected-views> để bảo vệ JSF 2.2 CSRF?

Trả lời

12

Tôi nhầm lẫn. Tôi thấy rằng JSF 2.0 có bảo vệ CSRF ngầm: How JSF 2.0 prevents CSRF

bảo vệ ngầm này là chỉ các yêu cầu POST (trang ví dụ với <h:form>).


Ở phía bên kia theo bài viết http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html chúng ta nên bổ sung các yếu tố sau đây để các tập tin faces-config.xml với danh sách các trang JSF.

<protected-views> 
    <url-pattern>/csrf_protected_page.xhtml</url-pattern> 
</protected-views> 

bảo vệ này cũng sẽ có hiệu lực trên các yêu cầu GET (trang ví dụ với <f:viewAction>, cũng là mới kể từ JSF 2.2). Bất cứ khi nào bạn sử dụng <h:link> hoặc <h:button> để tạo liên kết GET/nút đến các trang đó, thì thông số yêu cầu GET mới javax.faces.Token với giá trị mã thông báo được tạo tự động sẽ được thêm vào URL trong đầu ra HTML được tạo và thông số này sẽ được yêu cầu khi trang được đề cập được khai báo trong <protected-views>.


nên <protected-views> được sử dụng cho JSF 2.2 bảo vệ CSRF?

Chỉ trên các trang có <f:viewAction> mà bạn muốn bảo vệ CSRF. Những người có <h:form> đã được bảo vệ hoàn toàn bởi javax.faces.ViewState trường nhập ẩn, với điều kiện là bạn đã không tắt trạng thái xem JSF bằng <f:view transient="true">. Xem thêm a.o. CSRF, XSS and SQL Injection attack prevention in JSF.

+0

Khi nào/tại sao các trang có '' bắt buộc phải được bảo vệ (trên yêu cầu GET) đối với CSRF? – Tiny

+2

@Tiny: Tôi cũng tự hỏi điều đó. Yêu cầu GET là theo định nghĩa idempotent. Xem thêm a.o. https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Disclosure_of_Token_in_URL – BalusC

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