首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否使用真实性令牌?还是禁用它?

是否使用真实性令牌?还是禁用它?
EN

Stack Overflow用户
提问于 2011-09-28 01:10:01
回答 2查看 1.4K关注 0票数 1

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

我想出了如何形成POST数据包,但我不明白的是如何避免真实性令牌问题。

有没有办法让我的小笨蛋客户端抓取正确的令牌并将其发回?(我猜不是,否则它不会是一个很好的安全特性)。

这不是一个高度安全敏感的应用程序,所以我应该告诉这个页面完全忽略authentity-token吗?

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

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

Keb的

EN

回答 2

Stack Overflow用户

发布于 2011-09-28 01:19:17

如果每个客户端都通过了身份验证,那么可以禁用身份验证令牌,也就是说,您应该只对该操作禁用它。

代码语言:javascript
运行
复制
skip_before_filter :verify_authenticity_token, :only => :create
票数 2
EN

Stack Overflow用户

发布于 2014-06-11 19:50:50

如果每个客户端都经过身份验证,则可以禁用身份验证令牌

只有在使用http cookie之外的其他身份验证机制时才是这样。因为你提到了'session_id',所以我假设情况并非如此。

使用标准的rails cookie,user_id存储在会话中,并且此操作可由the浏览器访问,它将暴露于session_id攻击。

api的最佳策略是实现一种自定义身份验证机制,即某种身份验证令牌,它随每个http报头一起发送。

然后将csrf保护更改为null_session,或者如果您不那么偏执,请完全按照here的说明禁用csrf保护。

如果您仍然希望对api使用基于cookie的身份验证,则应该将第一个GET请求的csrf身份验证令牌设置为额外的cookie。然后读取此cookie并将其token作为“X-CSRF-Token”标头发送。Rails将在protect_from_forgery方法中检查此标头,并且由于cookies不能被3d方读取,所以攻击者将无法伪造此请求。

代码语言:javascript
运行
复制
#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: <token>" -b cookie.txt -d '{"item":{"title":"test"}}' "http://example.com/items.json"

请参阅:verified_request?方法,了解rails如何检查请求伪造。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7573024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档