何时使用/不使用protect_from_forgery

时间:2014-07-31 02:51:37

标签: ruby-on-rails json authentication antiforgerytoken

我知道如何启用/禁用真实性令牌验证,但我不知道何时启用它。

例如在rails应用程序中,我理解的是以下内容。如果我弄错了,请告诉我

Web:

  • 公共页面(未记录)应启用真实性令牌验证
  • 身份验证页面(登录,注册,丢失密码......)应启用真实性令牌验证
  • 私人网页(已登录)无需启用真实性令牌验证

API:

  • public api(未记录,JSON访问)应启用真实性令牌验证
  • 身份验证API(登录,注册,丢失密码......,JSON访问)应启用真实性令牌验证
  • 私有api(登录,JSON访问)不需要启用真实性令牌验证

1 个答案:

答案 0 :(得分:3)

私有页面不需要启用CSRF保护是不正确的。用户通过身份验证的私有页面是易受CSRF攻击的页面。在这次攻击中,登录的某人被欺骗(例如,通过点击电子邮件中的链接)采取他们不打算采取的行动 - 该网站接受的行动,因为它来自具有有效效率的登录用户会话。 protect_from_forgery通过确保非GET请求只能由知道他们正在采取的操作的用户从网站本身启动来阻止这种情况。