Rails请求伪造保护设置
请帮助一个新手在Rails :)我有
protect_from_forgery
调用(默认情况下给出)我的ApplicationController
类没有属性。
基本上这是代码:
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
protect_from_forgery
helper_method :current_user_session, :current_user
filter_parameter_logging :password, :password_confirmation
我认为它应该做的是:它应该在没有正确authenticity_token
的情况下阻止任何POST请求。但是当我用jQuery发送post请求时,如下所示,它工作正常(有在数据库中执行的更新语句)!
$.post($(this).attr("href"), { _method: "PUT", data: { test: true } });
我在控制台中看到发送的参数中没有authenticity_token
,但请求仍被视为有效。这是为什么?
UPD
在config / environments / development.rb中找到配置设置
config.action_controller.consider_all_requests_local = true
由于DEV环境和本地请求,这些jQuery帖子请求都可以。
没有找到相关结果
已邀请:
2 个回复
怪酞撩匹
,您的代码就没有任何问题。如果你有另一个应用程序在其他地方运行,例如在localhost:3001上,你从那里发送了一个帖子,那么它将无法正常工作。事实上,如果您使用的是Firefox> 3.0,它也可以早期实现跨站点xhr。例如,您可以从任何其他站点发送POST(但是这项工作提供了protect_from_forgery已关闭!)。为xhr不需要auth令牌的原因是禁用了交叉站点xhr。因此,在不提供身份验证令牌的情况下使用xhr是安全的。如果你尝试从你的应用程序以外的任何其他地方,我相信它会引发一个异常请求一个身份验证令牌。此外,您应该定义一个crossdomain.xml,以防止从外部源访问。 试着这样做:
。看看你是否得到200响应代码。如果你这样做,有一些可疑的东西。
埃庐