<protected-views> 是不是应该用于 JSF 2.2 CSRF 保护?
Posted
技术标签:
【中文标题】<protected-views> 是不是应该用于 JSF 2.2 CSRF 保护?【英文标题】:Should <protected-views> be used for JSF 2.2 CSRF protection?<protected-views> 是否应该用于 JSF 2.2 CSRF 保护? 【发布时间】:2015-01-14 04:07:04 【问题描述】:我很困惑。 我看到 JSF 2.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>
是否应该用于 JSF 2.2 CSRF 保护?
【问题讨论】:
【参考方案1】:我很困惑。 我看到 JSF 2.0 具有隐式 CSRF 保护: 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
文件中。<protected-views> <url-pattern>/csrf_protected_page.xhtml</url-pattern> </protected-views>
此保护对 GET 请求也有效(即带有 <f:viewAction>
的页面,这也是自 JSF 2.2 以来的新功能)。每当您使用 <h:link>
或 <h:button>
创建指向这些页面的 GET 链接/按钮时,带有自动生成令牌值的新 GET 请求参数 javax.faces.Token
将附加到生成的 HTML 输出中的 URL,此参数将是当相关页面在<protected-views>
中声明时需要。
<protected-views>
应该用于 JSF 2.2 CSRF 保护吗?
仅在您希望 CSRF 保护的带有 <f:viewAction>
的页面上。带有<h:form>
的那些已经受到javax.faces.ViewState
隐藏输入字段的隐式保护,前提是您没有通过<f:view transient="true">
关闭JSF 视图状态。另见 a.o. CSRF, XSS and SQL Injection attack prevention in JSF.
【讨论】:
何时/为什么需要保护带有<f:viewAction>
的页面(在 GET 请求上)免受 CSRF 攻击?
@Tiny:我也想知道。 GET 请求根据定义是幂等的。另见 a.o. owasp.org/index.php/…以上是关于<protected-views> 是不是应该用于 JSF 2.2 CSRF 保护?的主要内容,如果未能解决你的问题,请参考以下文章
html 中如何在table标签中添加一个编号列呢?就是第一行编号是1,第二行编号是2,以此类推