【问题标题】:Symfony2, custom ajax requests and CSRFSymfony2,自定义 ajax 请求和 CSRF
【发布时间】:2015-04-27 14:34:37
【问题描述】:

我正在做一个使用大量 Ajax 请求和自定义表单的网站(听到:自定义 jQuery 伪造的带有字段的 POST 请求,或简单的 GET 请求)。 我知道 Ajax 和 Symfony 表单并非不兼容(因为服务器看不出任何区别),但这不是问题。

我非常担心 CSRF 攻击,因为我的 POST 请求没有使用 Symfony 的官方方式来构建和检查表单,所以我没有自动 CSRF 保护。

我有两个问题:

  • 我可以认为我的 POST 请求是安全的吗?大多数 CSRF 攻击是通过指向敏感端点的img 标签完成的。无法通过图像伪造 POST 请求。做到这一点的唯一方法是 JavaScript 注入吗?如果我使用 Twig(安全的用户内容,包括,感谢 HTML 转义),我的页面中间可能不会有用户注入的 JS。那么,我脱离危险了吗?

  • 无论如何,我也很少有 GET 明智的端点。我必须保护他们。保护相关操作的最简单方法是什么?使用form.csrf_provider 服务生成的令牌附加链接(GET 参数),然后在每个相关操作的入口处进行验证?

【问题讨论】:

  • 为什么要投反对票?也许我的问题很愚蠢,但它并没有回答我的问题。

标签: forms security symfony


【解决方案1】:

您需要搜索 CSRF 并阅读更多相关信息。

这种类型的攻击不仅可以用在<img>标签中(其实我之前没想到它可以和<img>一起使用)。

攻击者可以创建一个表单,将 post-request 发送到您的服务器,而用户将不知道这一点(如果他看不到页面的源)。

【讨论】:

  • 是的,img 只是一个例子。当然,它适用于所有可以包含浏览器自动加载的 URL 的标签。但这只是一个 GET 请求,不建议/标准修改/删除 GET 请求上的信息,这就是为什么我将明智的 GET 请求更改为其他方法的原因。感谢您警告我有关外部表格的信息!推荐人检查是不够的......你有什么建议?我说的令牌?
  • CSRF-tokens 正是为了这些目的而存在的。
  • 但是如果黑客从官方站点获取页面,解析页面,找到令牌并将其注入到他的正确形式中怎么办? (如果这个问题看起来很愚蠢,对不起,也许我还没有理解令牌是如何工作的)。
  • 再次,您需要了解有关 CSRF 的更多信息。令牌存在于会话中。
  • Juste做了一些实验,我看到黑客的外部站点无法通过ajax加载官方表单(并解析DOM找到token),这要归功于CORS控制。即使启用了 CORS,吸气站点上的令牌也是不同的。如果我发送表单,Symfony 会拒绝它。我想我开始了解 CSRF 代币是如何工作的。我想我有我需要的所有答案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
相关资源
最近更新 更多