2010-11-23 27 views
3

我有一个Rails 3应用程序配置用户注册使用运行在服务器上的设计。我允许用户通过网站登录到服务器,并允许用户使用Iphone App创建帐户和登录。如何允许a)不使用CSRF令牌+ SSL的HTTP认证或b)使用设计需要CSRF令牌?

当人们正在使用的iPhone应用程序,我想支持这两个动作:

一)帐户注册没有CSRF(做这个事业的任何安全问题)?

b)用由SSL

c)任何POST请求到服务器登录到与SSL HTTP认证被固定后固定HTTP认证登录。

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

谢谢你的帮助。

+0

CSRF令牌与输入用户名和密码无关。他们只是确保您不能对已登录的用户执行跨站点请求攻击(例如,使用特制的Javascript鼠标悬停或嵌入式图像)。他们只是确保在发布表单时,表单是由用户在您的网站上发起的。 – 2011-01-30 23:10:25

回答

3

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

class StatsController < ApplicationController 
    skip_before_filter :verify_authenticity_token 
    ... 
end 

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

+1

详细说明`skip_before_filter:verify_authenticity_token,:id =>:skip_csrf?`,然后只需在您的应用程序控制器上实现`skip_csrf?`就可以使用任何您想要的条件。 – 2011-01-30 23:08:33