问题标签 [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 投票
0 回答
66 浏览

ruby-on-rails - 在 Rails 应用程序中收到第一个 POST 请求后,如何使注册表单的真实性令牌失效?

我的应用程序将在 Pitchfork 攻击时创建一批新帐户。查看注册表单时,我的应用程序会提供一个真实性令牌。一旦包含此令牌的第一个 PUT 请求到达,我想使此令牌无效,以便无法使用相同的令牌创建其他用户帐户。换句话说,每次创建帐户时,都应首先查看注册表单。

0 投票
1 回答
45 浏览

ruby-on-rails - 向 API::V1 模块控制器提交请求时无法验证 Railsauthentity_token

我遇到了 Rails 5 的一个非常奇怪的问题。我有两个控制器,第一个 asusers_controller和第二个 as api/v1/users_controller。这两个控制器都有一个register动作。我正在尝试向这两个控制器发布表单。此表单创建如下,

路线

当我使用/registerurl 提交表单时,它会成功处理。但是,当我使用v2/register/userurl 提交表单时Can't verify CSRF token authenticity出现错误。

参数

api/v1/users_controller当我使用 ajax 在请求中使用X-CSRF-TOKEN标头提交表单时,它工作正常。

我在哪里进行更改以使我的 api/v1 控制器工作?

0 投票
1 回答
820 浏览

ruby-on-rails - Rails 5.2 中的表单中的 InvalidAuthenticityToken

我有一个可工作的 Rails5.2 应用程序,它需要重组数据库以改进某些表的组织。自此更改以来,我发现我的某些表单在本地计算机上始终失败并出现以下错误:

当然,作为重构的一部分,我不得不在应用程序中进行很多更改,但测试都通过了。

我可以通过skip_before_action :verify_authenticity_token在相关控制器上进行设置(根据以前的 SO 线程)来避免这个问题,但这当然不是一个好的解决方法。我想知道根本原因是什么并消除它。

  • 表单在其自己的页面上时有效,并放置render在 HTML 中。
  • 当我设置skip_before_action.
  • 否则表单将失败并出现 AuthenticityToken 错误 - 即使之前使用相同的结构。

这一切都在我的本地机器上通过有效会话进行了测试。


该表单是在服务对象中创建的,作为数据表的最后一行(以便我可以向表中添加新行)。这是问题的潜在原因 - 它是在服务对象中而不是在 ERB 中呈现的?虽然这种方法在重构之前运行良好......

部分如下,正如我所说,如果将其单独放置在页面上(例如 pay_bands/new),但不是放置在需要的位置(在数据集/编辑上):

涉及的模型有Dataset和PayBand,定义如下。

数据集控制器的相关部分是:

支付带控制器是:

在我摆弄数据模型之前,上述所有控制器结构都与应用程序的工作版本相同!

===

编辑

经过更多研究后,我决定检查标题,看看是否可以看到令牌值。但是,meta csrf-token标头标记中的标记值与此页面上 3 种不同形式的 3 种不同标记中的任何一个都不匹配。但是一个仍然有效(render在 ERB 模板中编辑的简单表单),而另外两个不工作(render在服务对象中编辑的那个)。这一切都让我和以前一样困惑!

另外,我尝试从我的 GemFile 和 application.js 文件中删除 Turbolinks,重新运行bundleand rails s,但没有任何区别。

0 投票
1 回答
4971 浏览

ruby-on-rails - Rails 6 - 常量 ActionController::InvalidAuthenticityToken

我正在修改 Rails 6,并且不断在 Rails 生成的表单上获取 ActionController::InvalidAuthenticityToken,例如(实现 rails 教程书籍注册/登录流程)

这发生在所有表单上,输出转储看起来像这样

转储

应用程序.html.erb

我应该怎么办?

0 投票
1 回答
39 浏览

ruby-on-rails - 表单远程:trueauthentity_token 消失

如果我将 remote: true 设置为我的表单authenticity_token 就会消失。我必须在我的表单中添加authentity_token: true 吗?缓存呢?如果我缓存表单,我必须添加authenticity_token:true?是authentity_token被缓存的问题吗?谢谢

0 投票
1 回答
65 浏览

authlogic - 未初始化的常量 Authlogic::Session::Validation

我正在将 rails 4.2 站点升级到 6.0 并收到

当我尝试加载表单时,大概是因为 Validation 模块已从 Authlogic 中删除,并且一些旧的 gem/code 仍在尝试引用它。如果我对 form_with 使用authentity_token=false 选项,它就会消失,但显然我不想这样做。

所以,在某个地方,某种东西正在引用这个旧模块。这是摩擦:

  1. 我已经在整个代码库中搜索“Authlogic::Session::Validation”。没有什么。
  2. 我已经在整个 gem 树中搜索“Authlogic::Session::Validation”。没有什么。

就像它被配置为用于生成表单真实性令牌或其他东西的插件,但我不知道该配置在哪里或如何找到它。我的意思是,对于那个错误,那个字符串必须在某个地方,对吧?

这是我收到错误时调用堆栈的相关部分(我的代码在moments.haml中):

编辑:我在调用 form_authenticity_token (在上面的调用堆栈中引用)时设置 csrf-token 元标记时遇到了同样的错误。我忘记了我在尝试调试时已将其注释掉。

0 投票
0 回答
210 浏览

ruby-on-rails - How can I check in Rails controller if InvalidAuthenticityToken error was raised from session expiry?

I would like to be able to rescue this error and do stuff in some specific controllers, only if it was raised because of session expiry (set to 24h in session_store.rb). Is there a way to know the difference between session expiry and an actual CSRF attack/missing authenticity token when raising this error?

I am currently using this configuration :

I am trying to understand the specifics of how the Rails server knows that the authenticity_token should be considered invalid.

I guess the information I miss is : where is the backend logic of comparison between

  • the date of first response + cookie creation
  • the date after expiry time (24h in my case) that checks that the cookie/session/token is not valid anymore ? Is that on Rails side ? On Redis side ? In the browser ?

I hope I could make my question clear enough ! Thanks :)

0 投票
1 回答
56 浏览

ruby-on-rails - 仍然需要rails 6令牌身份验证?

我在 rails 5.xx 上学习课程,当他们使用表单时,他们会在表单的开头添加一行用于令牌身份验证以保护他们的网站,如下所示:

但是要使用最新版本的 Rails,我使用的是 6.1.3 版本,我在网上看不到任何关于此的内容。所以问题是:我还需要在任何地方设置这个真实性令牌吗?如果是,在哪里?如果没有,为什么?如果你有一些关于 Rails 6 的链接,我不会拒绝。谢谢。

0 投票
0 回答
103 浏览

ruby-on-rails - 在 Rails 中处理机器人的最佳方法

我们被随机的 POST 和 GET 轰炸,主要是 500 b/c 的无效真实性令牌(POST):

如果我们实施此解决方案:

间歇性 Rails 5 ActionController::InvalidAuthenticityToken

然后我们让机器人知道我们正在重定向。这很糟糕吗?如果是这样,有没有更好的方法来阻止它们,而不会用 500s 淹没我们的 prod 日志?

谢谢,凯文

0 投票
0 回答
13 浏览

ruby-on-rails - Rails 应用程序错误仅发生在以生产模式运行的实际 AWS 服务器中

我有一个部署在 AWS 服务器上的 rails 应用程序。但是,在用户登录期间,我不断收到此错误。

我尝试使用在生产模式下运行的相同设置在本地服务器上复制项目,但没有发生错误。它只显示在实际服务器上,而不是我的本地机器上。

我将 docker 与 docker-compose、rails 5.1、ruby 2.5 和设计一起使用。

我有=csrf_meta_tags我的layouts/application

这是我的一些内容application_controller.rb