默认情况下,Rails会自动为所有表单添加CSRF保护,方法是为站点生成的所有表单添加authentication_token.

我真的希望我的网站在首页上有一个简单的注册表单,当然是一个静态HTML页面.这在理想情况下将完全避免触及Rails堆栈,从而允许我向头版提供更多的请求.

这样做的缺点是,它使CSRF保护更加困难.

但我想知道,考虑到CSRF攻击通常依赖于受害者登录,以便利用信任,是否真的有必要在注册表单上设置CSRF保护.注册表单would如果验证正确,用户就可以登录,但我认为这对攻击者没有任何用处.

对于这一点,是否有既定的看法,或者使用Rails/jQuery的变通方法?

推荐答案

不,对于这种特殊情况,不需要.CSRF攻击允许攻击者利用受害者拥有的权利,

攻击登录表单毫无意义,因为如果攻击者拥有成功攻击登录字段所需的信息(用户名和密码),他可以自己登录.

Rails在登录字段上使用CSRF保护的原因很简单:与95%的字段相比,在全局范围内实现CSRF保护要简单得多;)

Ruby-on-rails相关问答推荐

在VP中部署rails 7和nginx

Heroku、Selenium、Chome和Chromedriver的复杂问题(抱歉,无法简单描述,请阅读详细信息)

如何为 I18n 设置 raise_on_missing_translations

Ruby Sinatra Web 服务在 localhost:4567 上运行,但不在 IP 上

attr_accessible(*attributes) 和 attr_protected(*attributes) 有什么区别?

如何在 Rails 3 中使用 Capybara 单击具有相同文本的第二个链接?

如何让 Rspec 运行嵌套在文件夹下的所有测试?

在 Rails 中,如何处理多个选中的复选框,只需拆分 , 或?

如何在 Rails 迁移中添加判断约束?

使用 RSpec 2 关闭一个规范的事务性固定装置

Rspec/Capybara 正在加载,循环要求被认为是有害的

Rails 中是否有 HTML 安全截断方法?

Rails 范围为 IS NOT NULL 并且不为空/空白?

我可以在 Ubuntu 上使用 apt-get 安装 gems 吗?

如何检测导致 Rake 中的弃用警告的原因

如何在 VS Code 中自动格式化 Ruby 或 .erb 文件?

你如何覆盖 form_for 助手中的类名?

反编译开发assets资源 管道

资源和资源方法之间的区别

Rails:如何在rails中使用dependent::destroy?