3

我正在使用Symfony2并使用 CSRF 令牌保护我的表单。
我有一个基于Ajax调用的评论系统。如果用户想要编辑他的评论,这就是发生的事情:

  • 用户点击编辑按钮。
  • 通过ajax 加载“新鲜”的评论编辑表单。
  • 用户通过 ajax 编辑并提交表单。
  • 编辑后的评论将作为响应发回。

通过 ajax加载“新”编辑表单是否存在安全风险?

如果表单已经在加载的页面中并且无法通过 ajax 请求,则攻击者无法猜测 CSRF 令牌,但由于他可以请求表单,因此他可以得到令牌..
他不能.. ?

也许一个例子会更清楚:

Dave是我网站上的无辜注册用户 ( www.acme.com)。
Dave登录了我的网站,然后访问了www.evil.com. 他不知道,但是当他访问时,evil.com一个脚本被执行了。
该脚本发送了一个 ajax 请求www.acme.com/comments/123/edit并获得了编辑表单作为响应。
然后它用它的恶意内容填写该表单并提交该表单(同样,使用 ajax)。

邪恶的邪恶计划会奏效吗?

4

1 回答 1

2

据我了解,如果您的表单包含 CSRF 令牌字段,则没有风险。默认 Symfony2 CSRF 令牌取决于对攻击者不可用的会话(也取决于意图)。因此,当攻击者请求表单时,会使用攻击者(而非用户)的会话 ID。

于 2013-01-03T18:52:37.333 回答