CSRF和RESTful API(symfony2,php)

时间:2014-01-22 14:36:34

标签: php json rest symfony csrf

我正在使用php / symfony2开发RESTful API。

Symfony2提供了开箱即用的CSRF保护,它在使用普通表单数据时工作正常(它将CSRF令牌传递给表单,当发回时,它需要嵌入表单中的相同令牌)。

但是,如果您开发RESTful API,此解决方案不适用于此目的,我在后端< - >前端之间的通信纯粹基于JSON。因此我禁用了CSRF。

我知道没有CSRF令牌是不安全的,所以我想知道什么是使用RESTful API实现CSRF的最佳方式。

一个想法是拥有特定的网址,例如/ api / generate / csrf,可由前端调用,然后将令牌附加到json请求。它听起来不是最安全的方式,因为技术上可以由任何人生成令牌。

在开发RESTful API时,解决CSRF问题的最佳方法是什么。

干杯, 理查德

2 个答案:

答案 0 :(得分:1)

请记住,当您的REST客户端使用基于会话的身份验证时,您只需要CSRF保护,否则CSRF保护将无法帮助您。

如果您的请求使用基于会话的身份验证,我会将CSRF令牌作为标头包含在内。类似的东西:

CSRF-Token: dfsa0jr3n2io20a;

答案 1 :(得分:0)

我也正在研究这个问题。这是我的original question

到目前为止,我有一个理论上的解决方案,但我不太确定它会起作用。也许有人可以评论。

  1. 将CSRF TOKEN添加到JS应用程序可读的API响应cookie中;
  2. 通过JS应用程序将请求作为X-CSRF-TOKEN标头值发送;
  3. 验证API上的CSRF TOKEN。