问题标签 [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.
angular - 简单获取 angular4 错误:预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 X-XSRF-TOKEN
一个简单的获取 angular4 错误:在预检响应中 Access-Control-Allow-Headers 不允许请求标头字段 X-XSRF-TOKEN。
如何解决这个问题呢?
spring - Spring 何时发回 XSRF-TOKEN set-cookie 响应标头?
标题很好地总结了这一切。我正在询问应满足的条件,因此 Spring 决定发回Set-Cookie:XSRF-TOKEN=...
响应标头。
我可以看到我的很多请求都在不需要时收到带有此类标头的响应。例如,当我发送 GET 请求时,即使我X-XSRF-TOKEN
为请求设置了标头,它也会收到带有该标头集的响应。但是对于具有上述请求标头的 POST 请求,Spring 将停止发回 set-cookie 标头。所以我想知道应该满足什么条件,所以Spring决定寄回一个。
rest - 是否可以通过启用 CSRF 的完全不同 IP 地址的后端为前端提供服务?
在我遇到这个问题之前,我认为一切都应该顺利进行。但现在我面临一个我以前从未想过的问题。
我有两台服务器,一台前端和一台后端。这两个有不同的地址;192.168.2.10:8080
和localhost:4200
。后端是用 Java+Spring 实现的,而前端是 Angualr2(这并不重要,但还没有关系)。当然,我可以很容易地从 localhost 为它们提供服务,这只是为了测试。事实上,如果我从 localhost 为它们提供服务,我将不会遇到我将要描述的问题。
我的后端启用了 CSRF,这意味着对于每个 POST 请求(和其他一些方法),它需要一个 cookie 和一个 header 并相互匹配(XSRF-TOKEN
cookie 和X-XSRF-TOKEN
header)。问题是当我对我的后端服务器进行 Ajax 调用时,X-XSRF-TOKEN
没有正确填充。
当我在网络选项卡中打开 POST 请求时,我可以看到 cookie 已按原样发送到后端服务器。但是,请求没有X-XSRF-TOKEN
附带标题。
是的,我已将该withCredentials
属性设置为 true。正如我所说,如果两台服务器共享相同的 IP 地址,一切正常。我认为问题在于,由于 cookie 设置为不同的地址,因此 XMLHttpRequest 对象无法访问它以将其包含为标头,这对我来说是个遗憾。
那么,是否可以通过启用 CSRF 且不使用代理的完全不同 IP 地址的后端为前端提供服务?
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
-
控制器代码-
角码——
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 调用失败的错误显示在输出中:
提供的防伪令牌适用于与当前用户不同的基于声明的用户。
c# - 更新用户的 X-XSRF 令牌错误
假设我的应用中有一个可以更改用户名的模块。由于用户名已更改,因此 authcookie 应与 XSRF 令牌一起更新。
尝试此操作时,我收到一条错误消息,提示“提供的防伪令牌用于用户......”。好吧,我得到了一些关于如何解决这个问题的提示。由于当前 XSRF 令牌用于旧用户名而不是更新用户名,因此出现此错误。
查看 Global.asax 代码,用户名的更改只会反映在Application_AuthenticateRequest
. 我还修改了Application_PostAuthenticateRequest
强制在更新的用户名上创建新的 XSRF 令牌,如果在验证时会遇到相同的错误。
现在我真正的问题是,我可以从服务器端的 Global.asax 以外的地方触发Application_AuthenticateRequest
吗Application_PostAuthenticateRequest
?
我想在用户更新用户名后立即触发。
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
),但没有成功。
有没有办法解决这个问题?
javascript - 获取 Set-Cookie 标头以设置 CSRF Cookie 时避免 HTTP 403 错误的最佳方法
我正在调用具有 CSRF 保护的 REST API。
一切正常。我正在获取令牌并将其发送回服务器。
但是,当我执行第一个请求或浏览器中未设置 CSRF Cookie 时,它总是会引发HTTP 403
错误。
这是因为我没有发CSRF
回令牌,因为这是服务器发送Set-Cookie
标头以设置 CSRF Cookie 的第一个请求。
第一次向受 CSRF 保护的 API 发送请求时,避免此错误的最佳方法是什么?
在发送任何请求之前,我是否应该每次检查CSRF
浏览器中是否设置了 Cookie?
angular - angular4 httpclient csrf 不发送 x-xsrf-token
在 Angular 文档中,提到 Angular会自动在post 请求的标头中httpclient
发送 cookie 的值。文档链接XSRF-TOKEN
X-XSRF-TOKEN
但它不会为我发送标题。这是我的代码
设置 cookie 的 Nodejs 代码
我在 app.module.ts 中使用了 httpclient
** 以上代码仅用于调试目的。我没有 set-csrf 端点。
但是当我发送发布请求时它不会发送任何标题。我无法调试。
我也在 Angular 的 github 存储库中添加了这个问题。HttpXsrfInterceptor 检查请求是 GET 还是 HEAD,或者它是否以 http 开头。如果为真,它会跳过添加标题。
我不确定他们为什么跳过 http/s 部分。这是我在 github 上的问题
angularjs - 用于 Spring Security 和 AngularJS 的 CSRF/XSRF 保护
我试图在我的应用程序中添加 CSRF/XSRF 保护,但遇到了奇怪的行为。所有获取请求都可以正常工作,但是在所有发布/放置/删除时,我都会收到 403 Unauthorized。最奇怪的是,当我尝试调试我的 CSRF 过滤器时,请求没有到达它,它们在更早的地方被拒绝了。他们甚至没有到达我的身份验证过滤器,所以我无法弄清楚问题可能是什么。
我的安全配置:
我不添加过滤器,因为正如我所说,请求没有到达它们。但如果需要,我会完成我的问题。希望对您有所帮助,在此先感谢您!