我正在将webapp从JSF 1.2升级到JSF 2.1(使用Apache MyFaces实现).该应用程序也使用Seam并防止XSRF攻击,我正在使用该<s:token>标签.
现在我想知道<s:token>JSF 2.1是否仍然需要它.
有人可以提供一些相关信息吗?
干杯弗兰克
JSF 1.x对CSRF敏感,因为隐藏输入字段的值javax.faces.ViewState很容易预测.它由一些带有增量数字后缀的固定前缀值组成.因此,当JSF 1.x webapp具有XSS漏洞(在遗留JSP中相当容易忽略)时,可以通过javax.faces.ViewState基于当前值预测下一个值(并依赖于JSF 1.0/)来轻松准备CSRF攻击1.1盲目创建新视图而不是抛出的特征ViewExpiredException).
从JSF 2.x开始,XSS和CSRF攻击都难以完成.请注意,如果没有XSS漏洞,几乎不可能准备成功的CSRF攻击.JSP的后继Facelets具有隐式XSS攻击防范功能.在JSF 2.x中拥有XSS漏洞的唯一方法是明确使用<h:outputText escape="false">用户控制的输入.即便如此,如果有一个,隐藏的输入字段javax.faces.ViewState现在是一个很长且自动生成的值.无法预测下一个值.
所以,<s:token>JSF 2.x中已经没有真正的价值了.
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |