2012-01-02 34 views
10

Tôi đang nghiên cứu công cụ mà tôi thường xuyên nghe thấy khi thực hiện một ứng dụng web trong JSF 2.0, bạn đã được bảo vệ khỏi crossite - scripting và - yêu cầu giả mạo. Đoạn trích sau đây từ một SO post xác nhận điều này:Cách JSF 2.0 ngăn chặn CSRF

Trong JSF 2.0 này đã được cải thiện bằng cách sử dụng một giá trị được tạo tự động dài và mạnh mẽ thay vì một giá trị chuỗi chứ không phải dự đoán được và do đó làm cho nó một phòng CSRF mạnh mẽ.

Ai đó có thể cung cấp thêm chi tiết về điều này không? Giá trị được tạo tự động này ngăn chặn CSRF như thế nào? Cảm ơn!

+0

https://www.packtpub.com/mapt/book/application_development/9781782176466/9/ch09lvl1sec84/jsf-security-notes –

Trả lời

11

Giá trị được tạo tự động này ngăn chặn CSRF như thế nào?

Vì không thể đoán được. Vì vậy, kẻ tấn công không thể mã hóa nó trong một trường ẩn dưới dạng trang web tấn công (trừ khi trang đích có lỗ XSS và do đó giá trị đơn giản có thể được nhận trực tiếp bằng phương tiện XSS). Nếu giá trị không hợp lệ cho JSF, thì biểu mẫu gửi từ trang web tấn công sẽ không được xử lý mà thay vào đó, hãy tạo một ViewExpiredException. Xin lưu ý rằng kẻ tấn công vẫn cần phải lấy ID phiên để nó có thể được chuyển trở lại thông qua thuộc tính URL jsessionid, do đó bảo vệ CSRF "yếu" ban đầu vẫn sẽ yêu cầu một số lỗ XSS để lấy ID phiên.

Sau cùng, tôi có ấn tượng rằng bạn không hiểu gì về CSRF là gì; câu trả lời là khá tự giải thích nếu bạn hiểu CSRF là gì. Trong trường hợp đó, vui lòng kiểm tra câu hỏi sau: Am I under risk of CSRF attacks in a POST form that doesn't require the user to be logged in?

5

Một điều cần nhớ là bảo vệ CSRF trong JSF 2.0 là ẩn và chỉ hợp lệ đối với yêu cầu POST.

Trong JSF 2.2 sẽ có hỗ trợ rõ ràng hơn cho việc này. Tôi đã giải thích ngắn gọn điều này tại đây: http://arjan-tijms.omnifaces.org/p/jsf-22.html

+0

Vì vậy, đối với yêu cầu GET? Những gì có thể được thực hiện cho JSF 2.0? – oikonomopo

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