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