问题标签 [csrf-protection]
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 form_authenticity_token 与参数不匹配 [:authenticity_token]
在什么情况下 form_authenticity_token 与 params[:authenticity_token] 不匹配?
我看到未经验证的请求进入我的应用程序,因此我覆盖了 form_tag 以打印出一些调试信息。
我得到的输出显示会话具有与 form_auth_token 匹配的正确令牌,但提交的参数authentity_token 不匹配:
我认为根据定义 params[:authenticity_token] 将与 form_authenticity_token 相同。
- 我是否以错误的方式调试?
- 这可能是什么原因造成的?
symfony1 - Symfony 1.4 CSRF TOKEN 对 AJAX 表单的保护
我有一个 AJAX 表单,我希望在提交时受到 CSRF TOKEN 的保护。
我的问题是,如何在我的操作中验证它?
我可以通过我的 AJAX 调用成功发送它,但问题是在我的操作中验证它。
我知道
不起作用,因为它用于 link_to 功能。
有没有办法让我在我的行动中验证它?
任何建议将不胜感激。
谢谢!
csrf - CSRFGuard - 请求令牌与会话令牌不匹配
我正在尝试合并 CSRFGuard 库以纠正应用程序中的一些 CSRF 漏洞。但是,按照此处指定的配置后,当我导航应用程序时,我现在在日志中收到以下消息:
通过包括:
在我的main.jsp
页面上,链接都是建立的CSRFGuard
token
,例如
所以我无法理解我做错了什么,这可能导致链接传递的令牌不是预期值。
请让我知道是否有任何其他信息会使它更容易理解。
jsonp - JSONP能绕过CSRF吗
我对 CSRF 保护非常陌生,所以如果我做出错误的假设或遗漏了什么,请原谅,但我想确保我正在尽我所能来防止 CSRF。从我到目前为止的研究中,我发现了以下内容:
- CSRF 可以通过在所有 HTML POST 的请求正文中放置一个 nonce 参数来阻止(并且可能是最好的阻止),仅使用 POST 修改数据,并在服务器端验证令牌在处理请求之前是否有效。
- 恶意网站可以向我的网站发送请求(被随机数阻止),但由于浏览器上的同源策略,它们无法读取响应。假设有人使用安全浏览器,恶意站点无法使用 AJAX 从我的站点获取页面、读取随机数并将其用于自己。
- 在大多数(可能是任何)浏览器中,脚本标签不受同源策略的约束,因此可以允许从其他站点读取内容。
当我到达第 3 点时,我决定尝试使用 JSONP 在 Chrome 中获取 HTML 内容;我打开了我的控制台(页面不是来自本地主机)并运行以下代码:
我在控制台窗口中收到的是:
资源解释为脚本,但使用 MIME 类型 text/html 传输
据我所知,浏览器本质上是在告诉我它收到了内容,继续解析响应,但由于类型不是 application/json 而停止。所以最后,我的问题是,这可以妥协吗?尽管浏览器未能将响应解析为 JSON,但它确实有响应。有没有办法可以将此响应解析为 HTML,获取我的 CSRF 随机数,并破坏我试图强制执行的保护?在我看来(我希望这是真的)浏览器不允许这样做,就像他们首先不允许跨域请求进行基本上所有其他通信一样,这就是我们作为开发人员所依赖的(除了同源政策)来保护我们的网站。我的想法正确吗?
csrf - 使用 cookie 的 CSRF 令牌保护
将 csrf 令牌保存在 cookie 中是一种好习惯,还是在表单中使用隐藏字段更好?像验证码所做的那样,在每个用户请求中重新生成 csrf 令牌也很好吗?
谢谢
google-chrome-extension - 浏览器扩展中的 CSRF 保护
我需要为我的网站实施 CSRF 保护。所以我开始为我网站上的所有表单实现这个,但是我在浏览器扩展(Chrome、Safari、Firefox)中实现它时遇到了问题。我不知道如何为我的扩展(表单和 ajax 帖子)中的帖子执行此操作。有没有人实施过这个?
django - 由于 CSRF,无法 jQuery $.post 数据到 django 中的视图
在发布此之前,我已经尝试了在线发布的所有解决方案方法,包括 Stackoverflow 和 Django 上的解决方案。(我认为错误的原因可能是由于我使用的是较新的 jQuery 和 django 版本,并且大多数解决方案都已过时,使用 jQuery 1.9 和 django 1.5.1)
以下是一些不起作用的解决方案的 URL:
Django CSRF 检查因 Ajax POST 请求而失败
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax
任何帮助,将不胜感激。错误的另一种可能性是我实际上不确定将这些片段准确放置在哪里。到目前为止,我已经在文档加载时粘贴了 jquery 中的所有内容,我还尝试将代码粘贴到 .js 文件的开头。(我的 javascript 代码是分段的,有些是单独的 .js 文件,有些是与 django 上下文呈现的 html 内联的,所以任何带有“{{ csrftoken }}”的解决方案都是不好的。
谢谢!!
php - 唯一的表单令牌为用户禁用多任务处理
如果我想保护我的站点和用户免受跨站点伪造 (CSRF) 攻击,我可以$token = md5( time() * rand );
在每个具有表单的页面上生成一个唯一令牌。令牌在隐藏的输入字段中提交,echo '<input type="hidden" name="token" value="'.$token.'">';
同时存储在会话变量$_SESSION['token'] = $token;
中。
我将检查是否有任何提交的表格if($_POST['token'] == $_SESSION['token'])
并相应地进行。
但是,有些用户可能会同时执行多项任务。这是我现在实际上正在做的事情,而我正在发布这个。
在撰写我的帖子时,我打开不同的窗口/选项卡以可能研究信息或查看有关堆栈溢出的其他一些问题。堆栈溢出让我可以毫无问题地提交表单。
但是,如果我要在我的网站上这样做——这意味着在撰写帖子/表单的同时浏览其他页面——$token
每次我从我的网站上拉出不同的页面时,我都会重新生成。input
在我正在处理的表单上制作隐藏令牌并最终想要提交不正确的,因为它不再匹配$_SESSION['token']
变量,当我访问不同的页面时它已经重新生成......
有什么好的想法可以防止这个问题,或者有什么更好的解决方案来阻止 CSRF?
我想让我的用户执行多项任务并希望受到 CSRF 的保护......
zend-framework2 - Zend 框架 2 - csrf 在刷新时重新生成
Zend Framework 2 formElement csrf 有问题。
它工作正常,直到我提交无效表单,点击同一页面然后刷新页面。字段上出现“notTheSame”验证错误,并显示消息“提交的表单不是来自预期的站点” 。这是正确的,因为如果我检查 csrf 字段的值,它与提交之前的值不同。
在我决定添加 csrf 字段之前,表单运行良好。
我正在创建我的 csrf 字段,如下所示:
在视图文件中:
(FormErrors 是一个视图助手,用于检索表单消息并设置它们的样式)
在我的控制器中:
我想我的问题是,为什么我的 csrf 会在我回到表单页面后重新生成,因为表单无效?
ruby-on-rails - 如何在 public/index.html 文件中生成 <%= csrf_meta_tags %>
我在前端使用 Backbone,在后端使用 Ruby on Rails。我设计了 gem,用于我的身份验证。几天前,前端团队完成了他们的部分工作,现在我需要将它们绑定在一起。因此,我尝试使用 json 槽骨干(标准方式)通过 request 发送数据,即使我放入自定义会话控制器,我也会Started POST "/users/sign_in.json"
收到错误消息。像这样:Completed 401 Unauthorized in 180ms
protect_from_forgery except: :create
如何省略这个,或者我必须在哪里生成我的<%= csrf_meta_tags %>
,以便我可以使用我在网上找到的这种方法:
我无法将其移回标准 Rails 资产管道,因为前端是与我的后端分开编写的,后端依赖于 require.js。