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