问题标签 [protect-from-forgery]
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 的protect_from_forgery 真的有用吗?
我问这个是因为当我开始使用 ajax 或 flash 与 rails 通信时,我觉得这让我的生活变得过于复杂。
我知道防止 CSRF 很好,但我不能只检查引用者或其他东西吗?
ruby-on-rails - Rails 请求伪造保护设置
请帮助 Rails 中的新手 :) 我在课堂protect_from_forgery
上没有任何属性的调用(默认情况下给出) 。ApplicationController
基本上这里的代码:
我认为它应该做的是:它应该防止任何没有正确的 POST 请求authenticity_token
。但是当我像下面这样使用 jQuery 发送 post 请求时,它工作正常(在数据库中执行了更新语句)!
我在控制台中看到authenticity_token
发送的参数中没有,但请求仍然被认为是有效的。这是为什么?
UPD 在 config/environments/development.rb 中找到配置设置
由于 DEV 环境和本地请求,这些 jQuery post 请求是可以的。
php - Rails 3protect_from_forgery 问题
我有两个应用程序需要通过 HTTP 相互通信。一个是 PHP 应用程序,另一个是我的主要应用程序 Rails 应用程序。我需要 PHP 应用程序通过向 Rails 应用程序发送数据来与它通信,但是当我这样做时,我收到 Invalid Authenticity Token 错误。有没有办法解决?或者我将如何创建自己的令牌来传递 POST 以便我的 Rails 应用程序进行身份验证?
ruby-on-rails - Rails 3、protect_from_forgery 和 IE8 问题
我有一个在所有浏览器(Safari、Firefox、IE6、7、8 等)中都能正常工作的 Rails 应用程序
我有一个新用户拥有相当锁定的 IE8 版本,一旦他们尝试访问该应用程序,甚至在他们进入登录页面之前,他们就会出现 Windows 身份验证提示。如果他们尝试输入已提供的登录详细信息,则会失败。我并不担心它会失败,因为不应该出现身份验证提示。
一旦我从 ApplicationController 中删除了protect_from_forgery,他们就可以正常访问系统。
我曾尝试建议允许 cookie 等,但他们仍然遇到问题。有没有人对我们可以看的其他东西有任何建议
只是为了补充这一点。该站点使用大本营风格的子域系统。不确定这是否是一个问题。
ruby-on-rails - protect_from_forgery 不保护 PUT/DELETE 请求
我制作了一个演示应用程序,rails new demo
然后生成了一个脚手架用户控制器rails generate scaffold User name:string email:string
。脚手架的代码有一个ApplicationController
with protect_from_forgery
,UserController
它派生自ApplicationController
.
我运行 webrick,添加用户,很酷。真实性令牌与 /users 上的 POST 一起使用。
然而,仍然使用 Rails 3.0.5 我能够做到:
并在不提供令牌的情况下修改用户 3:
我也可以用 DELETE 做同样的事情:
这给了我:
您能否向我解释一下,当我从不随这些请求发送任何令牌时,为什么我可以做这些事情?
ruby-on-rails - 如何仅针对 json 关闭 railsprotect_from_forgery 过滤器
我有使用 Rails3 构建的网站,现在我想为移动客户端访问实现 json API。但是,由于protect_from_forgery 过滤器,从客户端发送json post 请求。因为客户端不会从服务器检索任何数据,所以客户端无法接收 auth_token 所以我想只为 json 请求关闭protect_from_forgery选项(我认为rails3默认会这样做,但显然它没有) .
我知道在这里讨论了类似的主题,但在这种情况下,他在发送发布请求之前收到 auth_token。
所以我的问题是只为json关闭protect_from_forgery是这样做的好方法吗?如果是,该怎么做?如果不是,有什么替代方案?
仅供参考,我使用以下 ajax 请求
我得到 ActionController::InvalidAuthenticityToken 错误。
顺便说一句,以下 curl 命令虽然有效......
ruby-on-rails - 部署后 Authencity Token 无效
每当我部署新版本的 Rails 应用程序时,前一个版本的真实性令牌就会失效。这是正常的行为。我不想改变这一点。
但是,任何在上一个版本上仍然打开页面的用户,如果他们尝试执行发布请求,将会收到无效令牌错误。
我能做些什么来阻止他们收到这个错误?
ruby-on-rails - Rails 3 protect_from_forgery 无法正常工作?
我正在使用protect_from_forgery
默认情况下在 application_controller.rb 中的 Rails 3.0.2。
我想触发一个InvalidAuthenticityToken
.
为此,我已将此 javascript 添加到我的页面:
使用 Firebug 检查 DOM 我看到authenticity_token
隐藏字段已正确更新。
如果我提交表单并检查来自服务器的日志,我会看到相关参数正确设置为“aaa”。我希望得到一段InvalidAuthenticityToken
时间的处理请求,因为它是正确的!
这怎么可能?
ruby-on-rails - 从浏览器外部到 Rails 服务器的请求的 CSRF 令牌问题
我需要POST
从浏览器外部发出 HTTP 请求,但 Rails 后端不接受身份验证(错误 401)。我知道在这种情况下我需要传递一个 CSRF 令牌,但它不起作用。
当我通过浏览器上的表单发出请求时,它按预期工作,但是当我尝试从浏览器外部(例如使用 curl)模拟相同的请求(在标头和 cookie 方面)时,身份验证不会不工作。
两个小的改变让我在没有浏览器的情况下成功:(1)关闭protect_from_forgery
,它验证 CSRF 或(2)使用GET
而不是POST
请求。在这两种情况下,传递 cookie 就足够了。这意味着问题肯定与 CSRF 相关。
所以,我的问题是:如何在POST
不使用浏览器的情况下将受 CSRF 保护的 HTTP 发送到 Rails 服务器?
为了澄清,该过程分为三个步骤:
Login:返回一个cookie来标识会话;
新:一个
GET
返回 CSRF 令牌以供以后使用的请求(使用 cookie);创建:
POST
提交我要创建的信息的请求(使用会话 cookie 和 CSRF 令牌)。
唯一失败的是第三步。
ruby-on-rails-3.1 - Rails CSFR 保护:写 before_filter 是否正确?
我的应用程序控制器如下所示:
如果没有 check_csrf,Rails 会在错误响应时向服务器控制台写入警告,然后像往常一样继续执行。所以我不得不编写自己的 check_csrf。现在它工作正常。这是正确的吗?有没有更简单的方法来停止执行错误请求?
导轨版本:3.1。