为什么不只是 csrf-to-6ren">
gpt4 book ai didi

ruby-on-rails - 为什么 Rails 把 csrf token 像这样

转载 作者:行者123 更新时间:2023-12-04 06:04:54 25 4
gpt4 key购买 nike

我从未使用过 Rails(只能回答我的问题),但我看到它在每个带有表单的页面中都放置了 CSRF token 。
我不明白的是为什么它使用两个 meta标签:

<meta name="csrf-token" content="<%= form_authenticity_token %>" />
<meta name="csrf-param" content="authenticity_token" />

为什么不只是 csrf-token 元?
<meta name="csrf-token" content="<%= form_authenticity_token %>" />
csrf-param有什么用?

最佳答案

Rails 允许您在与 CSRF token 相关的引擎盖下进行大量配置。如果您愿意,可以更改参数的名称——但如果您愿意,jQuery UJS driver需要知道新参数的名称(因为它在 Ajax 请求中使用)。这就是为什么这里有两个元参数:第一个是实际的真实性 token ,显然,但第二个是 Rails 的 JavaScript 驱动程序需要的,以便知道第一个的名称。 (您可以在 jQuery driverPrototype driver 中看到这一点。)

你可能会争辩说这会让你陷入某种疯狂的循环——为什么你不能重命名 csrf-param元标记与另一个元标记?我认为这样做是为了让 Rails 可以轻松采用现有的 CSRF 解决方案,而无需大量手动覆盖。它还允许您的应用程序稍微面向 future 。如果 HTML5 标准曾经为 CSRF token 采用官方标记,并且 Rails 选择在 future 版本中更改默认 CSRF 标记,则 JavaScript 驱动程序根本不需要更改。

最终,我认为这最接近它存在的真正原因:它是对 CSRF 系统 future 变化的保险,防止在 future 发生不必要的和可能非常烦人的弃用。

关于ruby-on-rails - 为什么 Rails 把 csrf token 像这样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12198904/

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