问题标签 [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.

0 投票
1 回答
975 浏览

angular - 简单获取 angular4 错误:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 X-XSRF-TOKEN

一个简单的获取 angular4 错误:在预检响应中 Access-Control-Allow-Headers 不允许请求标头字段 X-XSRF-TOKEN。

如何解决这个问题呢?

0 投票
1 回答
2142 浏览

spring - Spring 何时发回 XSRF-TOKEN set-cookie 响应标头?

标题很好地总结了这一切。我正在询问应满足的条件,因此 Spring 决定发回Set-Cookie:XSRF-TOKEN=...响应标头。

我可以看到我的很多请求都在不需要时收到带有此类标头的响应。例如,当我发送 GET 请求时,即使我X-XSRF-TOKEN为请求设置了标头,它也会收到带有该标头集的响应。但是对于具有上述请求标头的 POST 请求,Spring 将停止发回 set-cookie 标头。所以我想知道应该满足什么条件,所以Spring决定寄回一个。

0 投票
0 回答
228 浏览

rest - 是否可以通过启用 CSRF 的完全不同 IP 地址的后端为前端提供服务?

在我遇到这个问题之前,我认为一切都应该顺利进行。但现在我面临一个我以前从未想过的问题。

我有两台服务器,一台前端和一台后端。这两个有不同的地址;192.168.2.10:8080localhost:4200。后端是用 Java+Spring 实现的,而前端是 Angualr2(这并不重要,但还没有关系)。当然,我可以很容易地从 localhost 为它们提供服务,这只是为了测试。事实上,如果我从 localhost 为它们提供服务,我将不会遇到我将要描述的问题。

我的后端启用了 CSRF,这意味着对于每个 POST 请求(和其他一些方法),它需要一个 cookie 和一个 header 并相互匹配(XSRF-TOKENcookie 和X-XSRF-TOKENheader)。问题是当我对我的后端服务器进行 Ajax 调用时,X-XSRF-TOKEN没有正确填充。

当我在网络选项卡中打开 POST 请求时,我可以看到 cookie 已按原样发送到后端服务器。但是,请求没有X-XSRF-TOKEN附带标题。

是的,我已将该withCredentials属性设置为 true。正如我所说,如果两台服务器共享相同的 IP 地址,一切正常。我认为问题在于,由于 cookie 设置为不同的地址,因此 XMLHttpRequest 对象无法访问它以将其包含为标头,这对我来说是个遗憾。

那么,是否可以通过启用 CSRF 且不使用代理的完全不同 IP 地址的后端为前端提供服务?

0 投票
4 回答
2302 浏览

angular - 使用 Aps.Net Core 在 Angular 2 和 Web Api 中实现 AntiForgery 令牌

我在 Angular 2 中有单独的前端项目而不使用 MVC,后端项目是 Web Api (Asp.Net Core),它们都托管在不同的域上。我实现了 AntiForgery 令牌功能,但它不起作用。

前端项目(UI)-http://localhost:8080/

后端项目(Web Api) -http://localhost:4823/

我能够XSRF-Token在每个请求中接收和发送 cookie,但 api 会400 Bad Request出错。我跟着这个链接 -Angular2 ASP.NET Core AntiForgeryToken

Startup.cs-

控制器代码-

角码——

在此处输入图像描述

0 投票
2 回答
662 浏览

angularjs - 带有 Angular 的 MVC - 使用 Adal 进行 Azure 登录重定向后,ValidateAntiForgeryToken 失败

我有一个带有嵌入式角度客户端的 MVC 站点,并且我最近实施了一个防伪 XSRF 令牌作为安全措施。

我在 Startup.cs 中进行了如下设置:

我已经在我的角度前端实现了它,如下所示:

并保护我的控制器,例如:

旨在X-XSRF-TOKEN通过对我的 API 的任何调用来验证标头,这对原始会话中的所有调用都有效。但是,我的应用程序使用 Adal 登录用户,并且在成功登录重定向后,此验证步骤失败,并且我从我的 API 收到 400 用于任何后续调用。

登录后,原始X-XSRF-TOKEN标头仍然与来自我的 Angular 客户端的所有传出请求一起发送,所以我怀疑一定是我的服务器端不再有要验证的令牌,或者我的服务器生成了一个新的,而我的客户端没有取回它。但无论出于何种原因,它都崩溃了,如果不创建一些自定义过滤器就很难调试,所以我可以看到里面发生了什么。

有没有办法在客户端重定向后重置此令牌,以便我的服务器和客户端再次共享它的常识?或者我应该在我Index.html的例子中生成令牌?

编辑

为缺少[Authorize]属性编辑了上面的控制器装饰。

因此,我的控制器受到验证 AzureAD Bearer 令牌以及防伪验证的步骤的保护。奇怪的是,删除 AzureAD 验证作为测试并没有解决问题。

在 Adal 登录后,API 调用失败的错误显示在输出中:

提供的防伪令牌适用于与当前用户不同的基于声明的用户。

0 投票
1 回答
517 浏览

c# - 更新用户的 X-XSRF 令牌错误

假设我的应用中有一个可以更改用户名的模块。由于用户名已更改,因此 authcookie 应与 XSRF 令牌一起更新。

尝试此操作时,我收到一条错误消息,提示“提供的防伪令牌用于用户......”。好吧,我得到了一些关于如何解决这个问题的提示。由于当前 XSRF 令牌用于旧用户名而不是更新用户名,因此出现此错误。

查看 Global.asax 代码,用户名的更改只会反映在Application_AuthenticateRequest. 我还修改了Application_PostAuthenticateRequest强制在更新的用户名上创建新的 XSRF 令牌,如果在验证时会遇到相同的错误。

现在我真正的问题是,我可以从服务器端的 Global.asax 以外的地方触发Application_AuthenticateRequestApplication_PostAuthenticateRequest

我想在用户更新用户名后立即触发。

0 投票
0 回答
474 浏览

angular - Angular 2 防止在单个 http 请求中添加 x-xsrf-token

我有一个网络应用程序,我需要在我的页面之外向网络服务发出请求。

这个请求是从一个受限页面中发出的,因此,我有一个x-xsrf-token设置,可以在我的网页上对我的用户进行身份验证。这是有效的。

但是我还需要向我的页面之外的网络服务发出请求,但它不接受x-xsrf-token,给我这个错误:

XMLHttpRequest 无法加载“ https://webservice-here ...”请求标头字段 X-XSRF-TOKEN 在预检响应中被 Access-Control-Allow-Headers 所允许。

但由于我在禁区内,我不知道如何解决这个问题......这是我的http服务:

我尝试手动删除x-xsrf-token(也尝试过xsrf-token),但没有成功。

有没有办法解决这个问题?

0 投票
1 回答
1259 浏览

javascript - 获取 Set-Cookie 标头以设置 CSRF Coo​​kie 时避免 HTTP 403 错误的最佳方法

我正在调用具有 CSRF 保护的 REST API。

一切正常。我正在获取令牌并将其发送回服务器。

但是,当我执行第一个请求或浏览器中未设置 CSRF Coo​​kie 时,它​​总是会引发HTTP 403错误。

这是因为我没有发CSRF回令牌,因为这是服务器发送Set-Cookie标头以设置 CSRF Coo​​kie 的第一个请求。

第一次向受 CSRF 保护的 API 发送请求时,避免此错误的最佳方法是什么?

在发送任何请求之前,我是否应该每次检查CSRF浏览器中是否设置了 Cookie?

0 投票
3 回答
20454 浏览

angular - angular4 httpclient csrf 不发送 x-xsrf-token

在 Angular 文档中,提到 Angular会自动在post 请求的标头中httpclient发送 cookie 的值。文档链接XSRF-TOKENX-XSRF-TOKEN

但它不会为我发送标题。这是我的代码

设置 cookie 的 Nodejs 代码

我在 app.module.ts 中使用了 httpclient

** 以上代码仅用于调试目的。我没有 set-csrf 端点。

但是当我发送发布请求时它不会发送任何标题。我无法调试。

我也在 Angular 的 github 存储库中添加了这个问题。HttpXsrfInterceptor 检查请求是 GET 还是 HEAD,或者它是否以 http 开头。如果为真,它会跳过添加标题。

这是HttpXsrfInterceptor 类中的代码

我不确定他们为什么跳过 http/s 部分。这是我在 github 上的问题

0 投票
3 回答
6141 浏览

angularjs - 用于 Spring Security 和 AngularJS 的 CSRF/XSRF 保护

我试图在我的应用程序中添加 CSRF/XSRF 保护,但遇到了奇怪的行为。所有获取请求都可以正常工作,但是在所有发布/放置/删除时,我都会收到 403 Unauthorized。最奇怪的是,当我尝试调试我的 CSRF 过滤器时,请求没有到达它,它们在更早的地方被拒绝了。他们甚至没有到达我的身份验证过滤器,所以我无法弄清楚问题可能是什么。

我的安全配置:

我不添加过滤器,因为正如我所说,请求没有到达它们。但如果需要,我会完成我的问题。希望对您有所帮助,在此先感谢您!