Tôi có trang XHTML JSF2 xác định tham số xem, điều này cho phép người dùng có các URL có thể đánh dấu trang. Các trang XHTML bao gồm các thông số:Chuyển hướng JSF2 với includeViewParams cho phép người dùng nhập biểu thức EL được giải quyết vào trường văn bản
<f:metadata>
<f:viewParam name="searchName" value="#{nbsearchpage.searchName}" />
<!-- More view parameters omitted here for brevity -->
<f:event listener="#{nbsearchpage.searchPreRender}" type="javax.faces.event.PreRenderViewEvent" />
</f:metadata>
Trên cùng một trang, tôi có một trường văn bản và một nút cho phép người dùng thay đổi searchName:
<h:form id="some-id">
<h:inputText value="#{nbsearchpage.searchName}" />
<h:commandButton value="search" action="#{nbsearchpage.search}" />
</h:form>
và cuối cùng, việc tìm kiếm phương pháp hành động() trong bean nbsearchpage trở về cùng một trang, nhưng bao gồm các tham số:
?faces-redirect=true&includeViewParams=true
cung cấp cho người dùng một URL đẹp. Khi người dùng nhập "IBM" vào trường tìm kiếm, URL được chuyển hướng đến
?searchName=IBM
Nó hoạt động hoàn toàn tốt. Nhưng bây giờ người dùng có thể nhập một biểu thức EL trong trường văn bản searchName và biểu thức EL được đánh giá. Ví dụ. khi người dùng nhập "# {2 + 2}" trong textfield, URL được chuyển hướng đến
?searchName=4
và đây là những gì tôi nghĩ chúng ta không nên làm, cho phép người dùng nhập vào biểu EL do an ninh lý do. Tôi đang sử dụng Glassfish 3.1.1.
Bất kỳ ý tưởng nào về cách ngăn EL tự động này giải quyết? Tôi nghĩ rằng có một lỗ hổng cơ bản với khái niệm tham số khung nhìn trong JSF2 và với chuyển hướng? Tôi đã có cùng một vấn đề với phạm vi xem không tồn tại chuyển hướng, và cho điều này tôi đã phải tạo ra một phạm vi riêng. (Tôi có thể đã sử dụng phạm vi flash).
Tôi có thể tạo lại điều này với Mojarra 2.1.2, đây là một lỗ hổng bảo mật nghiêm trọng vì nó cũng cho phép truy cập vào các thuộc tính phiên và gọi các phương thức tùy ý. –