问题标签 [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.
ruby-on-rails - 在 Rails 应用程序中收到第一个 POST 请求后,如何使注册表单的真实性令牌失效?
我的应用程序将在 Pitchfork 攻击时创建一批新帐户。查看注册表单时,我的应用程序会提供一个真实性令牌。一旦包含此令牌的第一个 PUT 请求到达,我想使此令牌无效,以便无法使用相同的令牌创建其他用户帐户。换句话说,每次创建帐户时,都应首先查看注册表单。
ruby-on-rails - 向 API::V1 模块控制器提交请求时无法验证 Railsauthentity_token
我遇到了 Rails 5 的一个非常奇怪的问题。我有两个控制器,第一个 asusers_controller
和第二个 as api/v1/users_controller
。这两个控制器都有一个register
动作。我正在尝试向这两个控制器发布表单。此表单创建如下,
路线,
当我使用/register
url 提交表单时,它会成功处理。但是,当我使用v2/register/user
url 提交表单时Can't verify CSRF token authenticity
出现错误。
参数
api/v1/users_controller
当我使用 ajax 在请求中使用X-CSRF-TOKEN标头提交表单时,它工作正常。
我在哪里进行更改以使我的 api/v1 控制器工作?
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,重新运行bundle
and rails s
,但没有任何区别。
ruby-on-rails - 表单远程:trueauthentity_token 消失
如果我将 remote: true 设置为我的表单authenticity_token 就会消失。我必须在我的表单中添加authentity_token: true 吗?缓存呢?如果我缓存表单,我必须添加authenticity_token:true?是authentity_token被缓存的问题吗?谢谢
authlogic - 未初始化的常量 Authlogic::Session::Validation
我正在将 rails 4.2 站点升级到 6.0 并收到
当我尝试加载表单时,大概是因为 Validation 模块已从 Authlogic 中删除,并且一些旧的 gem/code 仍在尝试引用它。如果我对 form_with 使用authentity_token=false 选项,它就会消失,但显然我不想这样做。
所以,在某个地方,某种东西正在引用这个旧模块。这是摩擦:
- 我已经在整个代码库中搜索“Authlogic::Session::Validation”。没有什么。
- 我已经在整个 gem 树中搜索“Authlogic::Session::Validation”。没有什么。
就像它被配置为用于生成表单真实性令牌或其他东西的插件,但我不知道该配置在哪里或如何找到它。我的意思是,对于那个错误,那个字符串必须在某个地方,对吧?
这是我收到错误时调用堆栈的相关部分(我的代码在moments.haml中):
编辑:我在调用 form_authenticity_token (在上面的调用堆栈中引用)时设置 csrf-token 元标记时遇到了同样的错误。我忘记了我在尝试调试时已将其注释掉。
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 :)
ruby-on-rails - 仍然需要rails 6令牌身份验证?
我在 rails 5.xx 上学习课程,当他们使用表单时,他们会在表单的开头添加一行用于令牌身份验证以保护他们的网站,如下所示:
但是要使用最新版本的 Rails,我使用的是 6.1.3 版本,我在网上看不到任何关于此的内容。所以问题是:我还需要在任何地方设置这个真实性令牌吗?如果是,在哪里?如果没有,为什么?如果你有一些关于 Rails 6 的链接,我不会拒绝。谢谢。
ruby-on-rails - 在 Rails 中处理机器人的最佳方法
我们被随机的 POST 和 GET 轰炸,主要是 500 b/c 的无效真实性令牌(POST):
如果我们实施此解决方案:
间歇性 Rails 5 ActionController::InvalidAuthenticityToken
然后我们让机器人知道我们正在重定向。这很糟糕吗?如果是这样,有没有更好的方法来阻止它们,而不会用 500s 淹没我们的 prod 日志?
谢谢,凯文
ruby-on-rails - Rails 应用程序错误仅发生在以生产模式运行的实际 AWS 服务器中
我有一个部署在 AWS 服务器上的 rails 应用程序。但是,在用户登录期间,我不断收到此错误。
我尝试使用在生产模式下运行的相同设置在本地服务器上复制项目,但没有发生错误。它只显示在实际服务器上,而不是我的本地机器上。
我将 docker 与 docker-compose、rails 5.1、ruby 2.5 和设计一起使用。
我有=csrf_meta_tags
我的layouts/application
这是我的一些内容application_controller.rb