4

我需要将 CSRF 保护添加到 Web 应用程序。

问题在于应用程序严重依赖链接(即 GET 请求)来对数据库进行更改。

链接是使用类生成的,因此我可以轻松地为每个链接添加一个用于 CSRF 令牌的额外参数。

但是,我知道 GET 请求中的 CSRF 令牌可能不是一个足够好的保护。

请注意,应用程序只能通过 HTTPS 使用,因此在客户端/服务器通信期间 GET 参数不能被暴露/窃取(但历史窃取问题仍然存在)。

在此设置中,GET CSRF 令牌参数是否可以被视为“足够安全”?

如果没有,解决此问题的最佳方法是什么?我想到的唯一一件事就是将我的每个链接包装成一个表单(显式以太,或使用 JavaScript 创建表单 onSubmit)。

4

1 回答 1

4

为了能够读取对 CSRF 攻击请求的响应,攻击者需要让受害者执行他的 JavaScript 代码。因此,“GET”请求的 CSRF 几乎没有用处。这是假设您已遵循“GET”请求不应修改任何数据并且只需要使用“POST”来完成任何修改的标准

  1. 使用基于 cookie 的身份验证和 SSL 应该让您远离试图更改参数的人
  2. 您可能需要引入一些基于时间戳的签名以避免重放攻击

也就是说,如果你有任何 POST 请求,你应该考虑 CSRF 保护。

于 2012-09-11T17:30:31.893 回答