我很困惑。我看到JSF2.0有隐含的CSRF保护:How JSF 2.0 prevents CSRF
另一方面,根据http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html文章,我们应该将以下元素添加到带有JSF列表的faces-config.xml文件中。
<protected-views>
<url-pattern>/csrf_protected_page.xhtml</url-pattern>
</protected-views>是否应该使用<protected-views>来保护JSF2.2CSRF?
发布于 2014-11-19 11:04:17
我很困惑。我看到JSF2.0有隐含的CSRF保护:https://stackoverflow.com/questions/8704612/how-jsf-2-0-prevents-csrf
这种隐式保护只适用于POST请求(即带有<h:form>的页面)。
另一方面,根据http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html文章,我们应该将以下元素添加到带有JSF列表的
faces-config.xml文件中。 /csrf_protected_page.xhtml
这种保护对于GET请求也是有效的(即使用<f:viewAction>的页面,这也是JSF2.2之后的新版本)。每当您使用<h:link>或<h:button>创建到这些页面的GET链接/按钮时,就会在生成的HTML中将一个具有自动生成令牌值的新GET请求参数javax.faces.Token追加到该URL中,并且当在<protected-views>中声明所讨论的页面时将需要该参数。
是否应该使用
<protected-views>来保护JSF2.2CSRF?
只有在网页与<f:viewAction>,你想要CSRF-保护。那些使用<h:form>的用户已经被javax.faces.ViewState隐藏输入字段隐式保护,前提是您没有通过<f:view transient="true">关闭JSF。另见a.o.。CSRF, XSS and SQL Injection attack prevention in JSF。
https://stackoverflow.com/questions/26969415
复制相似问题