<protected-views>应该用于JSF 2.2 CSRF保护吗?

Mic*_*ael 11 security jsf csrf jsf-2.2 protected-views

我很迷惑.我看到JSF 2.0具有隐含的CSRF保护: JSF 2.0如何阻止CSRF

另一方面,根据文章http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html,我们应该将以下元素添加到faces-config.xml文件中JSF页面列表.

<protected-views>
   <url-pattern>/csrf_protected_page.xhtml</url-pattern>
</protected-views>
Run Code Online (Sandbox Code Playgroud)

应该<protected-views>用于JSF 2.2 CSRF保护吗?

Bal*_*usC 16

我很迷惑.我看到JSF 2.0具有隐含的CSRF保护: JSF 2.0如何阻止CSRF

这种隐式保护仅适用于POST请求(即带有的页面<h:form>).


另一方面,根据文章http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JSF-CSRF-Demo/JSF2.2CsrfDemo.html,我们应该将以下元素添加到faces-config.xml文件中JSF页面列表.

<protected-views>
   <url-pattern>/csrf_protected_page.xhtml</url-pattern>
</protected-views>
Run Code Online (Sandbox Code Playgroud)

这种保护对GET请求也是有效的(即<f:viewAction>自从JSF 2.2以来也是新的页面).每当您使用<h:link><h:button>创建这些页面的GET链接/按钮时javax.faces.Token,具有自动生成的标记值的新GET请求参数将附加到生成的HTML输出中的URL,并且当声明有问题的页面时,此参数将是必需的.<protected-views>.


应该<protected-views>用于JSF 2.2 CSRF保护吗?

仅适用于<f:viewAction>您希望CSRF保护的页面.那些<h:form>已被javax.faces.ViewState隐藏输入字段隐式保护的那些,前提是你没有关闭JSF视图状态<f:view transient="true">.另请参阅JSF中的 ao CSRF,XSS和SQL注入攻击防范.

  • @Tiny:我也想知道.GET请求按照定义是幂等的.另请参阅ao https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Disclosure_of_Token_in_URL (3认同)
  • 何时/为什么需要针对 CSRF 保护(在 GET 请求上)带有 `&lt;f:viewAction&gt;` 的页面? (2认同)