有人可以向我发出有关如何保护CSRF应用程序的信息吗?
任何与此相关的代码。
我正在使用extjs作为UI,后端使用Java和tomcat服务器。
提前致谢。
答案 0 :(得分:1)
以dan_waterworth建议的方式使用会话ID,虽然容易,但保护性很差。攻击者只需捕获会话ID cookie,然后就可以绕过会话生命周期的保护。
会话ID是一个cookie,因此它随任何请求一起提交。因此,攻击者捕获会话ID所需要做的就是让您的应用程序在攻击者的控制下向服务器提交请求。这可以通过跨站点脚本攻击来完成,但也可以通过构建应用程序并提交iFrame的表单来完成(还有其他方法可以做到这一点)。
需要保护免受CSRF影响的交互应该包括攻击者事先不可能知道的信息(CSRF令牌),每个会话,每页和每个表单是唯一的,然后理想情况下只使用一次。 CSRF令牌应该以表格形式提交,而不是在cookie中提交(由于上述原因)。有关详细信息和示例实现,请参阅OWASP CSRF protection cheatsheet中的“实现示例”。一些Web应用程序引擎(例如Tomcat 8)和框架(例如Spring,JSF)具有可以通过打开配置来应用的保护。
答案 1 :(得分:0)
是的,我有一个对我有用的简单解决方案。对于每个发布请求,通过javascript(从cookie获取)在数据中发送sessionid,在服务器端,只需要检查每个发布请求中的sessionid cookie和数据中的sessionid是否相同。