1

有人可以向我指出有关如何保护应用程序免受 CSRF 影响的信息吗?

任何与此相关的代码。

我在 UI 上使用 extjs,在后端和 tomcat 服务器上使用 Java。

提前致谢。

4

2 回答 2

1

以 dan_waterworth 建议的方式使用会话 ID 虽然很容易,但保护效果很差。攻击者只需要捕获会话ID cookie,然后就可以绕过会话生命周期的保护。

会话 id 是一个 cookie,因此它与任何请求一起提交。因此,攻击者捕获 sessionid 所需要做的就是使您的应用程序向攻击者控制的服务器提交请求。这可以通过跨站点脚本攻击来完成,但也可以通过构建应用程序并提交 iFrame 的表单来完成(还有其他方法可以做到这一点)。

需要保护免受 CSRF 影响的交互应该包括攻击者不可能事先知道的信息(CSRF 令牌),每个会话、每个页面和每个表单都是唯一的,理想情况下只使用一次。CSRF 令牌应该在表单中提交,而不是在 cookie 中(出于上述原因)。有关详细信息和示例实现,请参阅OWASP CSRF 保护备忘单中的“实现示例” 。一些 Web 应用程序引擎(例如 Tomcat 8)和框架(例如 Spring、JSF)具有可以通过打开配置来应用的保护。

于 2017-07-16T18:25:03.563 回答
0

是的,我有一个对我很有效的简单解决方案。对于每个 post 请求,通过 javascript(从 cookie 获得)发送数据中的 sessionid,在服务器端它只需要检查每个 post 请求的 sessionid cookie 和数据中的 sessionid 是否相同。

于 2010-12-03T07:29:25.220 回答