【问题标题】:How to allow either a) HTTP auth without CSRF token + SSL or b)require CSRF token with devise?如何允许 a) 没有 CSRF 令牌 + SSL 的 HTTP 身份验证或 b) 需要带有设计的 CSRF 令牌?
【发布时间】:2011-05-14 11:51:24
【问题描述】:

我有一个 Rails 3 应用程序,使用在服务器上运行的设计配置了用户注册。我允许人们通过网站登录服务器,还允许人们创建帐户并使用 Iphone 应用程序登录。

当人们使用 Iphone 应用程序时,我想支持这两种操作:

a) 注册没有 CSRF 的帐户(这会导致任何安全问题)吗?

b) 使用受 SSL 保护的 http 身份验证登录

c) 登录后对服务器的任何 POST 请求都将使用带有 SSL 的 http auth 进行保护。

当用户在网站上时,我想在所有操作上都需要 CSRF 令牌(这样用户就不会每次都输入用户名和密码)。

感谢您的帮助。

【问题讨论】:

  • CSRF 令牌与输入用户名和密码没有任何关系。他们只是确保您不能对登录用户执行跨站点请求攻击(例如,使用特制的 Javascript 鼠标悬停或嵌入图像)。他们只是确保在发布表单时,该表单是由您网站上的用户发起的。

标签: iphone ruby-on-rails devise csrf


【解决方案1】:

您可以选择性地禁用控制器或单个操作方法上的 CSRF 令牌。

class StatsController < ApplicationController
  skip_before_filter :verify_authenticity_token
  ...
end

我实际上想做类似的事情,我会让 iPhone 使用不同的域名,并根据几个条件选择性地禁用 :verify_authenticity_token 过滤器。这只是为了让我们坚持下去,直到我们能够启动并运行 OAUTH2 实现。

【讨论】:

  • 详细说明,skip_before_filter :verify_authenticity_token, :id =&gt; :skip_csrf?,然后在你的应用控制器上实现skip_csrf?,无论你想要什么条件。
猜你喜欢
  • 2017-01-01
  • 2018-06-22
  • 1970-01-01
  • 2016-10-08
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 2017-06-05
相关资源
最近更新 更多