使用真实性令牌? 或者禁用它?

我的迷你网络设备会将数据样本提交给RoR应用程序,该应用程序会将它们添加到MySQL表格中。

我想出了如何形成POST数据包,但我没有得到的是如何避免真实性 – 令牌问题。

我的小哑客户有没有办法获取正确的令牌并将其发回? (我猜不是,或者它不是一个安全function)。

这不是一个高度安全性敏感的应用程序,所以我应该告诉这个页面完全忽略认证令牌吗?

希望通过每个客户端(Web设备)使用唯一的用户ID和密码登录这一事实进行身份validation,因此它将受到会话ID的保护。

如果我使用“松散”语言,请随时纠正我。 我是部署网站的新手。

Keb’m

如果每个客户端都经过身份validation,则可以禁用真实性令牌,该令牌表示您应该仅为该一个操作禁用它。

skip_before_filter :verify_authenticity_token, :only => :create 

如果每个客户端都经过身份validation,则可以禁用真实性令牌

只有在使用其他身份validation机制而不是http cookie时才会出现这种情况。 因为你已经提到’session_id’,我认为情况并非如此。

使用标准的rails session_id cookie,存储在会话中的user_id以及可由webbrowser访问的此操作,它将暴露给csrf攻击。

api的最佳策略是实现自定义身份validation机制,某种身份validation令牌,与每个http头一起发送。

然后将csrf保护更改为null_session,或者如果您不那么偏执,则完全为您的api请求禁用csrf保护,如此处所述

如果您仍希望坚持使用基于cookie的身份validation,则应将带有第一个GET请求的csrf authenitcation令牌设置为额外的cookie。 然后你读取这个cookie并将它的标记作为’X-CSRF-Token’标题发送。 Rails将在protect_from_forgery方法中检查此标头,并且由于3d方无法读取cookie,攻击者将无法伪造此请求。

 #application_controller.rb protect_from_forgery with: :exception after_action :set_csrf def set_csrf cookies['X-CSRF-Token'] = form_authenticity_token if protect_against_forgery? end # request session and x-csrf-toke # the cookies will be stored into cookie.txt curl -c cookie.txt http://example.com #curl post command curl -H "X-CSRF-Token: " -b cookie.txt -d '{"item":{"title":"test"}}' "http://example.com/items.json" 

请参阅:verified_request? 查看rails如何检查请求伪造的方法。