加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails,OAuth和CSRF保护

发布时间:2020-12-17 03:11:30 所属栏目:百科 来源:网络整理
导读:我正在使用REST和OAuth与Rails应用程序交谈(来自iPhone应用程序,但这不应该是相关的).但是,我遇到了Rails的CSRF保护(通过protect_from_forgery)的一些问题. 我知道CSRF保护只能用于常规表单提交(即Content-Type = application / x-www-form-urlencoded),所以
我正在使用REST和OAuth与Rails应用程序交谈(来自iPhone应用程序,但这不应该是相关的).但是,我遇到了Rails的CSRF保护(通过protect_from_forgery)的一些问题.

我知道CSRF保护只能用于常规表单提交(即Content-Type = application / x-www-form-urlencoded),所以如果我提交JSON或XML数据,我会没事的.不幸的是,OAuth目前仅限于application / x-www-form-urlencoded请求.有一个draft spec that extends OAuth to non-form-urlencoded data,但这对我现在没有帮助.

我看到它的方式,我有以下选择:

>将数据作为JSON发送,知道它不会成为OAuth签名的一部分,因此会受到中间人攻击.显然不是一个有吸引力的解决方案.
>创建内部委托给常规操作的特殊Rails操作(例如UsersController#update_oauth)(例如UsersController #update).然后将这些从伪造保护中排除(protect_from_forgery:only => [:update]).这应该是可行的,并且对于一个或两个动作可能是可接受的,但显然这将是一个非常混乱的解决方案.
>覆盖Rails CSRF保护以忽略OAuth请求.我没有试过这个,但似乎应该可以更改其中一个钩子(可能是verify_authenticity_token过滤器)以考虑OAuth请求是否成功.

有没有人遇到这个?有什么建议?或者我可能遗漏了一些基本的东西?

解决方法

我会回答我自己的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读