问题标签 [csrf-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 无法验证 CSRF 令牌的真实性
我有一个 Rails 应用程序,我正在使用带有timeoutable
. 如果用户的计算机闲置一段时间(我认为大约一个小时),当他们尝试再次登录时,我会得到以下服务器日志:
CSRF 令牌通常工作正常,问题仅在一个小时左右后出现。这具有在用户登录后立即将其注销的效果。以下是相关代码:
我正在使用可超时的设计 gem。这也是一个单页应用程序,它使用 Ajax 请求来访问 API,以及用户会话的会话 cookie。但我实际上并没有看到这有什么关系,因为任何网页都需要能够以某种方式处理过期的 CSRF 令牌,并且无论出于何种原因我都没有找到解决方案。
还可能值得一提的是,将时间更改timeout_in
为非常短(例如 30 秒)不会重现此错误,将计算机的睡眠计时器更改为 1 分钟也不会。考虑到到期的是 CSRF 令牌,而不是用户会话,这是有道理的。
红宝石 v1.9.3
导轨 v3.2.8
设计 v3.2.4
独角兽 v4.8.2
编辑:我发现了一些可能相关的东西
reactjs - 使用 React 获取 csrftoken cookie
我正在使用React制作我的第一个应用程序,与Django Rest Framework后端应用程序进行交互。他们都在他们的本地服务器上运行。
我发现来自React前端的请求(通过Axios发送)需要一个csrftoken cookie。我阅读并关注了Django 文档,但我总是得到一个undefined
csrftoken cookie。
这是请求的代码:
我打印以控制台的结果Cookies.get('csrftoken')
,我可以看到它总是undefined
。
我不知道我缺少什么才能获得csrftoken cookie。
php - CSRF Token保护的意义是什么?
我已经阅读了很多关于此的内容,但我仍然不明白。假设我有一个域,其表单仅供经过身份验证的用户对某种内容发表评论:
my_form.php
post_comment.php
如果“csrf_token”令牌值未发送或无效,post_comment.php 将拒绝任何请求。因此,我们正在阻止攻击者使用我们的 post_comment.php。
但是如何防止攻击者获取 /my_form.php,从表单中读取 csrf_token 值并使用它 POST 到 post_comment.php?我错过了什么?
angular - 无法在使用 hapi 开发的 api 和使用 angular 5 开发的前端的应用程序中实现 csrf 保护的 crumb
当我访问受 crumb 令牌保护的 hapi 端点时,我收到 403 禁止错误。我在我的 api 中为 CSRF使用了 npm 的 crumb包。我的 Api 是使用 hapi 开发的,前端是 angular 5。
我在我的 Hapi api 端点的“set-cookie”响应标头中获得了 crumb 令牌。每个端点的 Crumb 令牌都不同。
我应该如何验证通过我的角度应用程序发送到我的 hapi 端点的每个请求的 crumb 令牌?
我尝试了以下方法
我在我的 Angular 应用程序中添加了一个拦截器,并尝试使用“HttpXsrfTokenExtractor”的 getToken 方法提取令牌并将其设置在“X-XSRF-Token”标头中。它抛出异常“getToken”不是一个函数
我添加了一个端点 "getCrumb" ,这个端点正在返回 crumb 令牌。我将这个 crumb 令牌传递给“X-XSRF-Token”标头中的登录端点。但这给了我登录 api 的 403 禁止错误。
spring-boot - Spring Boot 安全性在响应标头 cookie 中添加 2 个 XSRF-TOKEN
我正在使用 Spring Boot 2.2 安全性,以下是我的 Java 配置:
我在响应标头中看到 XSRF-TOKEN 的 2 个 set-cookie,如下所示。不知道为什么。
设置cookie:XSRF-TOKEN=;最大年龄=0;到期时间=周四,1970 年 1 月 1 日 00:00:10 GMT;路径=/隐藏
设置cookie:XSRF-TOKEN = 5564cfc1-884d-4b89-9bb9-11a92f42bcc7;路径=/隐藏
我在这里想念什么?Spring 安全性相对较新。
api - csrfToken() 不适用于 html 页面?
我有节点 js 支持服务器,前端是作为 spa 服务器运行的简单 html 文件。
但它不起作用。
api - 我们如何保护 API?
我已经在 python 和 nOdejs 中使用了 csrf 令牌,它们可以工作,但我们有一个技巧可以摆脱它,因为在检查中,即使您已将该字段设置为隐藏,那么任何人都可以看到它。也许我做错了。使其安全的任何最佳方法,以便没有攻击者可以攻击我们的 api。
html - 页面级别的节点 js 中的 Csrf 修复
我查看了 node js Git hub 示例中的 csrf 实现,想知道这是针对应用程序级别的。如果我想在应用程序的一两个页面上应用它怎么办。我在网上没有找到任何示例。我知道在 asp.net 中你可以做到,但不确定如何在 Node JS 中实现同样的效果。
非常感谢指导解决方案的任何帮助。
angularjs - AngularJS:在 401 响应中刷新过期的 JWT 令牌
我在基于 401(未经授权)标头响应刷新过期的 JWT 令牌时遇到问题。我想要的是当用户获得 401(标头)响应时,应该通过调用特定服务(api)生成一个新的(刷新)JWT。
我在标头响应中发送 XSRF-TOKEN 和 access_token (JWT),这些工作正常。我什至还可以通过手动调用 api 来获取刷新(过期)令牌。但不能让它与 401(标题)响应一起工作。
我有一个工厂来处理这个承诺并拦截标头请求。我的(工厂)代码看起来像这样。
基于上面的代码,当令牌过期(401 响应)时,我在控制台中收到以下错误。
控制台错误
对此的任何帮助都将是非常可观的。谢谢。
jestjs - 发送 csrfToken 和 set-cookie 但仍然 403 invalid csrf token
我正在尝试使用 jest(测试环境:节点)通过集成测试,以获得使用 csurf 进行 csrf 保护的登录表单(使用 cookie 选项)。
我已经从登录表单和 set-cookie 标头中提取了 csrfToken,但测试仍然失败,并出现 403 - 无效 csrf 令牌。
我看不出问题出在哪里,希望能朝着正确的方向前进。
测试文件: