问题标签 [authenticity-token]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1552 浏览

ruby-on-rails - Rails 4 真实性令牌 - 在标题和表单隐藏输入中?

我试图在 Rails 中获得整页缓存,但我在 CSRF 方面遇到了很大的障碍——或者可能只是我对它的理解。我目前将form_authenticity_token字符串存储在 JS 可以访问和重写标题标签的 cookie 中。

我在生成的 HTML 中有两个地方可以找到标记:

1)在头部

<meta name="csrf-token" content="[hash]">

2) 在表单的隐藏输入元素内

<input type="hidden" name="authenticity_token" value="[different hash]">

如前所述,这些哈希值彼此不同(在未启用缓存的开发模式下)。为什么它们不同?为什么我可以删除头部元标记并单独保留表单输入并且允许请求​​?然而,当我删除表单输入标签并留下标题时,请求被拒绝了?

实际上,这意味着头部标签是无用的,不是吗?我可以将表单输入标签重写为我的 cookie 中的值,就像我对标题标签所做的那样,但由于它们彼此不同,我对最终结果可能意味着什么持谨慎态度,尤其是在涉及整页缓存时.

应用程序控制器包含:

0 投票
0 回答
403 浏览

ruby-on-rails-4 - Rails 4通过链接保存参数时无效的真实性令牌

我有一个Message模型,archived在我的 Rails 4 应用程序中有一个参数。在显示视图中,我有一个button_toarchived参数设置为true. 在我向模型中添加 Devise 和 Mailer 之前,此功能之前有效Message。现在,当我单击“存档”按钮时,我收到“ActionController::InvalidAuthenticityToken”错误。我发现唯一可以避免此错误的方法是添加skip_before_filter :verify_authenticity_token, :only => [:archive]到我的Messages Controller. 但是,当我这样做时,它不会保存参数。

有没有办法通过 button_to 链接传递真实性令牌?或者有没有更好的方法来实现这一点而不会损害它的安全性?

消息.rb

消息控制器.rb

MessagesHelper.rb

消息显示按钮

任何帮助表示赞赏!谢谢!

编辑:

这显然在我所有的形式中都是正确的。这是设计问题吗?

0 投票
1 回答
398 浏览

ruby-on-rails - 使用 Authenticity Token 完成 POST 请求,但仍然引发异常

我的控制器正在响应一个 js GET 请求,并且在我的js.erb文件中我报告Fingerprint2了用户浏览器生成的浏览器数据。这是通过 POST 请求完成的,因为数据字符串很大,所以我插入了一个beforeSend添加 Authenticity Token 的方法。

但是,这被拒绝了ActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityToken。当我检查时,标头看起来就像在成功的 GET 请求中一样:

js 代码如下所示:

0 投票
1 回答
145 浏览

ruby-on-rails - 手动添加真实性令牌,但未在后端验证

我的<%= csrf_meta_tags %>HEAD 标记中有 ,但我手动创建了表单,因此authenticity_token隐藏字段没有插入到我的表单中。

所以我authenticity_token手动添加了:

当我发送我网站的默认联系表单(用户未登录)时,处理它的操作应验证令牌并允许/拒绝请求。但事实并非如此:我使用 jQuery 清空字段并提交表单,但没有抛出错误或异常。

我得到了这一行protect_from_forgery with: :exception并将application_controller.rb其放入foo_controller.rb扩展 application_controller 并具有响应联系表单的操作。

那么我错过了什么?我需要做什么才能在后端验证此表单?

非常感谢!

0 投票
2 回答
3952 浏览

ruby-on-rails - 表单上的 Railsauthentity_token 与 csrf 令牌

在 Rails 4 应用程序的同一页面上,我有一个

在头部:

和身体以下:

js 调用需要 csrf 令牌。但是为什么form token 和csrf token 不一样呢?这两个令牌中的哪一个用于表单提交?

0 投票
1 回答
272 浏览

ruby-on-rails - NameError 将 config.action_view.embed_authenticity_token_in_remote_forms 添加到 true

我在我的 Rails 应用程序上处理 ajax,但出现 ActionController::InvalidAuthenticityToken 错误。

我读了这个

config.action_view.embed_authenticity_token_in_remote_forms 允许您在带有 remote: true 的表单中设置authenticity_token 的默认行为。默认情况下,它设置为 false,这意味着远程表单将不包含authentity_token,这在您对表单进行片段缓存时很有帮助。远程表单从元标记中获取真实性,因此除非您支持没有 JavaScript 的浏览器,否则嵌入是不必要的。在这种情况下,您可以将authentity_token: true 作为表单选项传递,或者将此配置设置设置为true。

来自RailsGuides

所以我添加config.action_view.embed_authenticity_token_in_remote_forms=true到 \config\application.rb

并重新启动rails服务器,然后发生错误

/Users/haha/railsbridge/railsfun/ruby12weeks/eat/config/application.rb:5:in':未定义的局部变量或方法配置'为 main:Object (NameError)

我是不是放错地方了?

这是我的github

0 投票
1 回答
1815 浏览

ruby-on-rails - 调试随机无效的真实性令牌错误

我们的生产服务器几个月来一直在产生无效的真实性令牌错误。几乎所有发送 (PUT|POST|DELETE) 请求的表单都会产生错误。有时会发生错误,有时不会。它们发生的原因似乎没有押韵或原因。错误本身并不经常发生,但对我们来说是一个担忧。下面是导致此错误的典型表单的示例。

这是我迄今为止发现的。

  1. 我们使用 Turbolinks 2.5.3(我们已经一年多没有更新了)。
  2. 在每次出现无效令牌错误的情况下,用户都会将真实性令牌传递给服务器,但它最终是无效的。
  3. 我们目前protect_from_forgery with: :exception在我们的应用程序控制器中使用。
  4. 几个月前,当我们将一堆新代码投入生产时,错误开始出现。这段新代码跨越了数百个文件,但到目前为止,我在代码中没有发现任何与此问题相关的内容。
  5. 该错误可能发生在任何类型的浏览器和设备上。
  6. 增加的流量与出现的无效身份验证令牌之间没有关联。
  7. 用户可以来自任何国家。
  8. 这些不是遇到这些问题的机器人。我们甚至有一位同事经历过这个错误,尽管他们不记得他们做了什么来产生它。
  9. 用户遵循典型的(如果不是预期的)行为。他们正在按预期使用该应用程序。我查看了他们的点击和记录的行为历史来得出结论。

最终我想弄清楚如何解决这个问题。我的第一步是成功重现错误,但我什至做不到。我的问题是:我能做些什么来让我弄清楚是什么原因造成的?我的选择已经不多了。谢谢!

0 投票
2 回答
6766 浏览

jquery - Rails 如何在不涉及表单的情况下在 Ajax 请求中发送 Authenticity Token?

出于多种原因,我需要通过 Ajax 向控制器发送一个发布请求,而我不能通过表单来完成它,它必须是一个 JS Ajax 请求,它写在 assets > javascript 的文件中或标签之间。

我编写了一个似乎可以正确传递数据的函数。但是,它没有传递有效的 Authenticity Token,因此不允许请求通过。

有没有办法遵守生成令牌的 CSRF 保护,以便控制器对此感到满意?

到目前为止,我的 Ajax 函数是:

此表单正在传递以下参数

我尝试在 Ajax 对象中包含以下行

这在应用程序布局头中没有成功

更新

Appart 来自 Aniket 的解决方案。添加

在表单选项哈希中也解决了这个问题

0 投票
1 回答
1128 浏览

ruby-on-rails - Rails InvalidAuthenticityToken 与 HTTPS + ELB

我正在尝试让 HTTPS 为我的网站工作,但我正在接受ActionController::InvalidAuthenticityToken所有发布请求。我记录了form_authenticity_paramand form_authenticity_token,它们实际上是不同的。

SSL 在 Elastic Load Balancer 处解析,并且非 SSL 请求被发送到 Web 应用程序。预期的 CSRF 令牌存储在基于 cookie 的会话中,因此 HTTP 和 HTTPS 的会话似乎需要不同的令牌。在站点上使用 HTTP 时,post/put 请求工作正常。

我已经被这个问题困住了一段时间。任何意见将是有益的

0 投票
7 回答
3896 浏览

ruby-on-rails - Rails、Graphql、Apollo 客户端的身份验证令牌无效

我正在尝试使基本的 Rails、Graphql、Apollo-Client 设置正常工作,但在 rails 端出现 422 错误“无效的身份验证令牌”时遇到问题。

我对阿波罗的使用看起来不对吗?

这是一个带有 graphql gem 和 apollo 客户端的 Rails 5 应用程序。

导轨日志: