问题标签 [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 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 中的值,就像我对标题标签所做的那样,但由于它们彼此不同,我对最终结果可能意味着什么持谨慎态度,尤其是在涉及整页缓存时.
应用程序控制器包含:
ruby-on-rails-4 - Rails 4通过链接保存参数时无效的真实性令牌
我有一个Message
模型,archived
在我的 Rails 4 应用程序中有一个参数。在显示视图中,我有一个button_to
将archived
参数设置为true
. 在我向模型中添加 Devise 和 Mailer 之前,此功能之前有效Message
。现在,当我单击“存档”按钮时,我收到“ActionController::InvalidAuthenticityToken”错误。我发现唯一可以避免此错误的方法是添加skip_before_filter :verify_authenticity_token, :only => [:archive]
到我的Messages Controller
. 但是,当我这样做时,它不会保存参数。
有没有办法通过 button_to 链接传递真实性令牌?或者有没有更好的方法来实现这一点而不会损害它的安全性?
消息.rb
消息控制器.rb
MessagesHelper.rb
消息显示按钮
任何帮助表示赞赏!谢谢!
编辑:
这显然在我所有的形式中都是正确的。这是设计问题吗?
ruby-on-rails - 使用 Authenticity Token 完成 POST 请求,但仍然引发异常
我的控制器正在响应一个 js GET 请求,并且在我的js.erb
文件中我报告Fingerprint2
了用户浏览器生成的浏览器数据。这是通过 POST 请求完成的,因为数据字符串很大,所以我插入了一个beforeSend
添加 Authenticity Token 的方法。
但是,这被拒绝了ActionController::InvalidAuthenticityToken - ActionController::InvalidAuthenticityToken
。当我检查时,标头看起来就像在成功的 GET 请求中一样:
js 代码如下所示:
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 并具有响应联系表单的操作。
那么我错过了什么?我需要做什么才能在后端验证此表单?
非常感谢!
ruby-on-rails - 表单上的 Railsauthentity_token 与 csrf 令牌
在 Rails 4 应用程序的同一页面上,我有一个
在头部:
和身体以下:
js 调用需要 csrf 令牌。但是为什么form token 和csrf token 不一样呢?这两个令牌中的哪一个用于表单提交?
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。
所以我添加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
ruby-on-rails - 调试随机无效的真实性令牌错误
我们的生产服务器几个月来一直在产生无效的真实性令牌错误。几乎所有发送 (PUT|POST|DELETE) 请求的表单都会产生错误。有时会发生错误,有时不会。它们发生的原因似乎没有押韵或原因。错误本身并不经常发生,但对我们来说是一个担忧。下面是导致此错误的典型表单的示例。
这是我迄今为止发现的。
- 我们使用 Turbolinks 2.5.3(我们已经一年多没有更新了)。
- 在每次出现无效令牌错误的情况下,用户都会将真实性令牌传递给服务器,但它最终是无效的。
- 我们目前
protect_from_forgery with: :exception
在我们的应用程序控制器中使用。 - 几个月前,当我们将一堆新代码投入生产时,错误开始出现。这段新代码跨越了数百个文件,但到目前为止,我在代码中没有发现任何与此问题相关的内容。
- 该错误可能发生在任何类型的浏览器和设备上。
- 增加的流量与出现的无效身份验证令牌之间没有关联。
- 用户可以来自任何国家。
- 这些不是遇到这些问题的机器人。我们甚至有一位同事经历过这个错误,尽管他们不记得他们做了什么来产生它。
- 用户遵循典型的(如果不是预期的)行为。他们正在按预期使用该应用程序。我查看了他们的点击和记录的行为历史来得出结论。
最终我想弄清楚如何解决这个问题。我的第一步是成功重现错误,但我什至做不到。我的问题是:我能做些什么来让我弄清楚是什么原因造成的?我的选择已经不多了。谢谢!
jquery - Rails 如何在不涉及表单的情况下在 Ajax 请求中发送 Authenticity Token?
出于多种原因,我需要通过 Ajax 向控制器发送一个发布请求,而我不能通过表单来完成它,它必须是一个 JS Ajax 请求,它写在 assets > javascript 的文件中或标签之间。
我编写了一个似乎可以正确传递数据的函数。但是,它没有传递有效的 Authenticity Token,因此不允许请求通过。
有没有办法遵守生成令牌的 CSRF 保护,以便控制器对此感到满意?
到目前为止,我的 Ajax 函数是:
此表单正在传递以下参数
我尝试在 Ajax 对象中包含以下行
这在应用程序布局头中没有成功
更新
Appart 来自 Aniket 的解决方案。添加
在表单选项哈希中也解决了这个问题
ruby-on-rails - Rails InvalidAuthenticityToken 与 HTTPS + ELB
我正在尝试让 HTTPS 为我的网站工作,但我正在接受ActionController::InvalidAuthenticityToken
所有发布请求。我记录了form_authenticity_param
and form_authenticity_token
,它们实际上是不同的。
SSL 在 Elastic Load Balancer 处解析,并且非 SSL 请求被发送到 Web 应用程序。预期的 CSRF 令牌存储在基于 cookie 的会话中,因此 HTTP 和 HTTPS 的会话似乎需要不同的令牌。在站点上使用 HTTP 时,post/put 请求工作正常。
我已经被这个问题困住了一段时间。任何意见将是有益的
ruby-on-rails - Rails、Graphql、Apollo 客户端的身份验证令牌无效
我正在尝试使基本的 Rails、Graphql、Apollo-Client 设置正常工作,但在 rails 端出现 422 错误“无效的身份验证令牌”时遇到问题。
我对阿波罗的使用看起来不对吗?
这是一个带有 graphql gem 和 apollo 客户端的 Rails 5 应用程序。
导轨日志: