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

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

概述我正在使用REST和OAuth与Rails应用程序交谈(来自iPhone应用程序,但这不应该是相关的).但是,我遇到了Rails的CSRF保护(通过protect_from_forgery)的一些问题. 我知道CSRF保护只能用于常规表单提交(即Content-Type = application / x-www-form-urlencoded),所以如果我提交JSON或XML数据,我会没事的.不 我正在使用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请求是否成功.

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

解决方法 我会回答我自己的问题. 总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails,OAuth和CSRF保护全部内容,希望文章能够帮你解决ruby-on-rails – Rails,OAuth和CSRF保护所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1292515.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-10
下一篇2022-06-10

发表评论

登录后才能评论

评论列表(0条)

    保存