问题标签 [x-xsrf-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.
asp.net-mvc - 如何检索 xsrf cookie 并将其添加到 REST 客户端调用?
我正在使用 RESTAssured 进行 api 测试。当我使用 Postman 测试 API 登录端点时,我得到了用于防伪的 cookie,Postman(和浏览器)在使用应用程序时每次调用都会使用这些 cookie。
要复制此行为以进行 API 测试,我可以调用进行身份验证,但 RESTAssured 不会像 Postman 那样检索服务器发送的 cookie。
如何为后续 API 调用检索 cookie?
到目前为止,我已经尝试过 Postman 和 RESTAssured,但可以灵活地使用 API 测试库。
当我调试和观看 authCookies 时,它缺少相关的防伪令牌。将 authCookies 添加到后续请求会导致 401 Bad Request。
angular - 可以将 XSRF-TOKEN 在标头中从后端发送到前端而不是将其存储为 cookie 吗?
我正在工作的一个团队在两个不同的域x-ui.app.example.com和x-api.app.example.com上有一个 UI 和一个 API 。这种架构显然不适用于 Angular / .NET Core 中的传统 XSRF 方式。
其描述的传统方式是:
- 当 x-api 收到它的第一个请求时,或者当 x-ui 调用某个端点时,x-api 将生成一个“XSRF-TOKEN”cookie,如下所述: https ://docs.microsoft.com/en-us/aspnet /core/security/anti-request-forgery?view=aspnetcore-2.2
- x-ui 将在以后的数据操作请求(例如 POST)中读取此 cookie,并将在请求标头中包含“XSRF-TOKEN”cookie 的内容:“X-XSRF-TOKEN”
这对我不起作用,因为有两个不同的子域,这意味着不允许 UI 读取由 x-api 子域创建的 cookie。我知道正确的做法是将域折叠到单个 ui/api 域中,然后一切都会神奇地工作,但是,由于时间限制,或者假设我不能这样做,我可以通过添加来解决这个问题app.example.com 域的“XSRF-TOKEN”cookie:
这使 UI 可以访问 cookie,因为它位于父域中。但是我不想这样做,因为这意味着在 app.example.com 中创建的任何其他应用程序也能够看到 cookie,这很粗鲁。
我正在考虑这样做的另一种方法是在初始调用的响应标头中将 XSRF-TOKEN 发送回,此时 UI 将负责将内容作为 cookie 保存在其自己的域中,然后是后续请求可以使用那个cookie。
我的问题是:这是一种可接受的 XSRF 方式吗?通过在 API 的响应标头中传回 XSRF-TOKEN 然后将其作为 cookie 存储在 UI 中,是否存在任何类型的漏洞?
它看起来像这样:
.NET 核心
还有 Angular 拦截器:(请注意,我会在此处添加更多检查以查看 cookie 是否已设置,因此它不会发生在每个 GET 请求上,而是要明白这一点)。
python-requests - How to get bond data from fundsupermart using post method?
I am trying to get bond data from this page, "https://secure.fundsupermart.com/fsm/bonds/factsheet/XS1415758991/DEGREE-7-250-03Jun2021-Corp-USD".
I inspected the page, the data can be found in Network-XHR, name is XS1415758991. The name is the bond ISIN code. I then found the link behind the name. “<a href="https://secure.fundsupermart.com/fsm/rest/bond-info/get-bond-factsheet-data/XS1415758991" rel="nofollow noreferrer">https://secure.fundsupermart.com/fsm/rest/bond-info/get-bond-factsheet-data/XS1415758991”. In the Headers, I also found "x-xsrf-token: 38ccccd8-6cae-46a9-b916-2e80e607e107".
I tried following codes, but replied "'Expected CSRF token not found. Has your session expired?'". I expect to get the data in ","bondPriceJsonHashmap"--"THREE_YEAR"
c# - 所需的防伪表单字段“__RequestVerificationToken”不存在 部分视图帖子上的错误
我正在从局部视图发布数据以使用 MVC@Ajax.ActionLink
方法执行更新操作,但是在包含标签
[ValidateAntiForgeryToken]
时它给了我错误。
[ValidateAntiForgeryToken]
当我从操作方法中删除标签时它工作正常。我的观点已经有了一个防伪令牌。我尝试@Html.AntiForgeryToken()
从部分视图中删除,但仍然遇到相同的错误。
_partialView.csHtml 代码:
控制器代码:
来自控制器的部分视图调用:
单击该按钮时,表单将被发回,并给出错误消息“__requestverificationtoken 不存在”。帮助我将防伪令牌发布到控制器,以避免 CSRF 攻击。
csrf - 如何自动处理基于 asp.net 核心的微服务的 CSRF 攻击?
我正在开发基于 ASP.NET Core WEB API 的微服务,这些微服务将被多个客户端应用程序(如 Angular 应用程序、iOS 和 Android 应用程序)使用。
在查看微服务的安全方面时,我确实看到有必要防止微服务受到 XSRF 攻击。经过分析,我发现有一种 ASP.NET Core MVC 应用程序的方法,如下面的 URL 所述: https ://andrewlock.net/automatically-validating-anti-forgery-tokens-in-asp-net-core-with -autovalidateantiforgerytoken 属性/
谁能帮我知道有没有办法自动验证 ASP.NET Core WEB API 中的防伪令牌?
任何带有一些示例代码的链接都会对我有很大帮助。
asp.net-core - 如果与 JWT 不记名身份验证一起使用,Asp.Net 核心 Web API 防伪验证将失败
我正在尝试在 Asp.net core 3.0 Web API 中使用 Anti-forgery 和 jwt 不记名身份验证。我面临的奇怪问题是防伪工作非常好,但是如果我尝试将[Authorize]
过滤器与控制器操作一起添加[ValidateAntiForgeryToken]
,则AntiForgery
验证失败并出现 Http 400 错误。
启动.cs:
用户控制器.cs:
如果我[Authorize]
在下面的操作Antiforgery
验证失败中使用过滤器。如果我删除它,Antiforgery
验证似乎工作正常。
用户控制器.cs:
这就是我生成 JWT 令牌的方式:
服务器日志:
HttpContext.user
在打电话之前尝试设置,_antiforgery.GetAndStoreTokens(HttpContext)
但没有奏效。
c# - 用户登录和令牌刷新问题后,Asp.Net web api 防伪令牌失败
我正在尝试使用 Asp.Net Web API 和 Angular 使用刷新令牌制作一个短暂的 JWT 令牌。
虽然 JWT 和刷新令牌不需要,但我也在尝试添加防伪令牌。在我登录之前,防伪令牌也可以使用。
成功登录用户后,我正在刷新令牌,但出现错误:
提供的防伪令牌适用于与当前用户不同的基于声明的用户
如果我没有登录,我可以使用防伪令牌执行以下操作:
* Angular HttpClient 不发送 GET 方法的令牌,所以我将端点更改为接受 POST 进行测试
当我尝试登录时,流程几乎相同。
UserController里面的登录方法:
在启动配置里面我有这个来设置初始匿名令牌
我让它“工作”的唯一一次是我删除了 app.use 函数中的 if 语句并为每个请求创建了一个新令牌,但它仍然在登录后的第一个请求时失败。
cookies - 有谁知道如何使用 __RequestVerificationToken 向应用程序发送 API 调用?(错误:cookie 和表单域被交换)
我正在尝试使用 VS2019 (C#) 和 RestSharp 通过 API 调用测试 Anti Forgery 令牌。我正在做的是对我们的登录页面执行 GET 以获取 4 个令牌/cookie,然后使用用户名和密码将这些附加到 POST 以尝试登录。第一次调用成功并返回给我一个 HTTP 200 和 4 个 cookie/令牌(ASP.NET_SessionId、XSRF-TOKEN、XSRF-COOKIE 和一个 __RequestVerificationToken - 都作为 cookie(在 cookiecontainer 中)附加到 POST API 调用),然而,第二次调用失败并显示 HTTP 500 并显示以下消息:“验证提供的防伪令牌失败。cookie“__RequestVerificationToken”和表单字段“__RequestVerificationToken”已交换。”。我在我的 POST 调用中包含此令牌两次 - 一次作为 cookie,一次作为请求正文的一部分。
谢谢,
杰米。
heroku - 将 Laravel 与 Sanctum 部署到 Heroku - CSRF 令牌不匹配
我用 Sanctum 开发了一个 Laravel+Vue 并进行了部署。在 localhost 上工作正常,我可以使用 Vue 表单或 Laravel UI 登录。在 Heroku 中,如果我尝试使用 Vue 表单登录,则会收到 CSRF 令牌不匹配错误;如果我使用 Laravel UI 登录,我会收到 419 错误页面。
我能注意到的是,在我的 Heroku 应用程序中,我的 cookie 中没有任何 XSRF_TOKEN,但在我的本地主机中却有。我尝试将会话驱动程序从文件更改为数据库驱动程序,因为我在 Heroku 文件驱动程序中读到由于其存储系统而无法正常工作,结果相同(CSRF 令牌不匹配而不是 XSRF-TOKEN)。
我也尝试过使用 http 和 https。