gpt4 book ai didi

ruby-on-rails - Rails 从 RestKit POST 显示 "WARNING: Can' t verify CSRF token authenticity

转载 作者:IT王子 更新时间:2023-10-29 08:00:05 26 4
gpt4 key购买 nike

当我尝试从 RestKit 进行 POST 时,Rails 控制台中出现警告:

Started POST "/friends" for 127.0.0.1 at 2012-04-16 09:58:10 +0800
Processing by FriendsController#create as */*
Parameters: {"friend"=>{"myself_id"=>"m001", "friend_id"=>"f001"}}
WARNING: Can't verify CSRF token authenticity
(0.1ms) BEGIN
SQL (1.7ms) INSERT INTO `friends` (`friend_id`, `myself_id`) VALUES ('f001', 'm001')
(1.1ms) COMMIT
Redirected to http://127.0.0.1:3000/friends/8
Completed 302 Found in 6ms (ActiveRecord: 3.0ms)

这是客户端代码:

NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];
[attributes setObject: @"f001" forKey: @"friend_id"];
[attributes setObject: @"m001" forKey: @"myself_id"];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:attributes forKey:@"friend"];
[[RKClient sharedClient] post:@"/friends" params:params delegate:self];

我怎样才能摆脱警告?

最佳答案

您可以使用以下方法安全地删除警告:

skip_before_filter  :verify_authenticity_token

这应该进入您拥有的每个 Rails API Controller ,或者如果您有一个用于所有 API Controller 的 base_controller 则将其放在那里。

如果您还可以通过网络浏览器访问您的应用程序,那么不要将此行放在 application_controller 中,因为您将创建一个安全漏洞。

删除 API 调用的 csrf 是安全的,因为特定漏洞只能通过网络浏览器执行。

2013 年 12 月 16 日更新

我已经看到一些指向此答案的链接和一些其他建议澄清的内容。如果您使用基于 Web 的身份验证方法对 API 进行身份验证 - 例如,API 可能容易受到 CSRF 的攻击。 session 或 cookie。

Is your Web API susceptible to a CSRF exploit? 中有一些很好的细节.

我的建议仍然代表 RestKit 的用户,因为用户凭据不太可能基于 session 或 cookie,而是基于用户名或 api key 。

如果您的 API 可以使用 session 或 cookie 进行身份验证,那么您应该避免跳过 : verify_authenticity_token 并且您应该考虑转向基于 api key 的身份验证。

如果您的 API 可以使用也用于在 Web 上进行身份验证的用户名和密码进行身份验证,则仍然存在潜在的漏洞,尽管它不太严重,因为它需要用户输入他们的用户名和密码到您的使用漏洞利用访问站点时在 HTTP 身份验证质询框中访问站点。同样,为了获得最佳安全性,您应该考虑转向基于 api key 的身份验证。

值得注意的是,我不同意你需要添加 :only => [:your_method] 来提供额外的保护,前提是你有隔离的 api Controller ,你的 api 不与您的网络响应并且您没有使用 session 或 cookie。如果这些就绪,您可以安全地将 skip_before_filter 添加到您的 api 的 base_controller 中。

关于ruby-on-rails - Rails 从 RestKit POST 显示 "WARNING: Can' t verify CSRF token authenticity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10167956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com