我沉迷于Struts,并且开始学习JSF 2.0。我可以继续使用 Struts 中有效的方法来减少攻击向量,还是有我需要编码的新攻击向量?
JSF/Facelets 已经转义了
UIOutput
和 UIInput
组件中的输出。因此,只要您通过 <h:outputText>
和 <h:inputWhatever>
重新显示用户控制的输入,那么 XSS 部分就是安全的。
JSF 还通过 javax.faces.ViewState
隐藏输入字段内置了针对
CSRF的预防措施。在 JSF 2.1 之前,这只是“太容易”猜测,另请参阅 JSF impl issues 812 和 JSF spec issues 869。最近(2010 年 10 月 3 日)JSF 2.1 已修复此问题。
请注意,防止 SQL 注入 攻击不是 Web MVC 框架的责任。您需要在数据层解决该部分。如果您以正确的方式使用 JPA(即不要在 SQL 字符串中连接用户控制的输入,而是使用参数化查询),那么该部分也是安全的。