- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想对 Stormpath post 中的 JWT token 和 CSRF 提出疑问解释了将 JWT 存储在 localStorage 或 cookie 中的优点和缺点。
[...] if you are reading values out of a cookie using JS, that means youcan't set the Httponly flag on the cookie, so now any JS on your sitecan read it, thus making it the exact same security-level as storingsomething in localStorage.
I'm trying to understand why they recommend adding the xsrfToken tothe JWT. Doesn't storing your JWT in the cookie and then extracting itout and placing the JWT in the HTTP header and authenticating therequest based on the HTTP header accomplish the same thing asAngular's X-XSRF-TOKEN? No other domain could make requests on auser's behalf if you authenticate based on the JWT in the header,since other domains cannot extract the JWT from the cookie. I don'tunderstand the purpose of the xsrfToken in the JWT - perhaps its justan additional layer of defense - meaning that attackers would have tohave a compromised script on your site and CSRF a user at the time. Sothey'd have to hit you in both ways to be able to pull of an attack.
帖子链接在this answer哪里说:
The last thing is to ensure that you have CSRF protection on everyHTTP request to ensure that external domains initiating requests toyour site cannot function.
[...] Then, on every request into your server, ensure that your ownJavaScript code reads the cookie value and sets this in a customheader, e.g. X-CSRF-Token and verify that value on every request inthe server. External domain clients cannot set custom headers forrequests to your domain unless the external client gets authorizationvia an HTTP Options request, so any attempt at a CSRF attack (e.g. inan IFrame, whatever) will fail for them.
即使他们可以设置自定义 header ,他们也无法访问存储 JWT token 的 cookie,因为只有在同一域上运行的 JavaScript 才能读取该 cookie。
他们唯一的方法是通过 XSS,但是如果存在 XSS 漏洞,JWT 中的 xsrfToken 也会受到损害,因为在受信任的客户端域中运行的恶意脚本可以访问 cookie 中的 JWT 并在请求中包含 header 使用 xsrfToken。
所以等式应该是:
如果客户端和服务器在不同的域中运行,则服务器应发送 JWT,客户端应使用 JWT 创建 cookie。我认为这个等式对于这种情况仍然有效。
更新: MvdD agree with me :
As the browser does not automatically add the header to your request,it is not vulnerable to a CSRF attack
最佳答案
我是 Stormpath 博客文章的作者。在 JWT 中存储 XSRF token 并不是关于它在 JWT 中,而是关于它在 cookie 中。 cookie 应该是 httpOnly,所以你不能从 Javascript 读取它。
现在,我认为引起一点困惑的一点是我谈论 Angular 地方。 Angular 也将它设置为仅 XSRF cookie(不是 httpOnly)以在请求时将其放入 header (这只能由同一域上的 javascript 完成)。这些不是同一个 cookie。
如果您考虑在您的应用程序中实现 XSRF 支持,这已经通过存储服务器端状态和存储 XSRF 的点来完成。将它存储在 httpOnly cookie 中是关于 XSRF 的无状态。在这里,您将验证 JWT 签名,从声明中获取 XSRF,并将其与 header 进行比较。
您的问题的答案是您不需要在服务器上存储状态。
关于javascript - 为什么要将 CSRF token 放入 JWT token 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013781/
1. JWT 简介 JSON Web Token(JWT) 是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。该信息可以被验证和信
关于JWT(json web token)的一些问题: 可以在手机上使用吗? 在我看来,它适用于移动设备,但它是否是一个很好的身份验证解决方案?如果不是,还有哪些其他解决方案可用于移动应用程序和服务器
我无法清楚地掌握 JWT 是如何工作的,尤其是。签名部分。 一旦客户端提交正确的用户名和密码,身份验证服务器就会创建一个 JWT token ,其中包含 header 、有效负载/声明和签名。 问题
我正在通过 jwt.io(在调试器部分)解码 JWT token 以查看标题、有效负载。令人惊讶的是,它还验证了,我可以看到它(jwt.io 调试器)也能够检索公钥。 所以我的问题是:JWT toke
我尝试使用 validate-jwt 策略限制使用 JWT token 对 REST API 的访问。以前从来没有这样做过。 这是我的入站策略(取自简单 token 验证here):
我们有一个微服务架构,使用 JWT 在服务之间进行身份验证。我希望轻松地从 JWT 中获取更多字段。目前实际上只有权限由 Spring Security 直接公开。 我们的边缘服务/API 网关创建以
我正在尝试在 .NET 中生成 JWT token 。起初,我尝试使用“System.IdentityModel.Tokens.Jwt”,但它在 token 验证期间引起了问题,所以我切换到“jose
我已经阅读了很多关于 stackOverflow 和 jwt 文档的问题。据我了解,现在我应该如何计算 token : header = { "alg": "HS256", "typ": "J
我想知道我可以设置的 JWT token 到期的最大值是多少。 谢谢! 最佳答案 没有关于过期时间的规定。它主要取决于使用 token 的上下文。 RFC7519 section 4 : The se
我在子域上托管了单独的身份验证应用程序和多个 spa 应用程序,我想将生成的 JWT token (当用户从身份验证应用程序登录时生成)从身份验证应用程序共享到子域下托管的其他应用程序。我怎样才能
据我所知,验证 JWT 签名是一个直接的过程。但是当我使用一些在线工具为我执行此操作时,它不匹配。如何在不使用 JWT 库的情况下手动验证 JWT 签名?我需要一种快速方法(使用可用的在线工具)来演示
我的 JSON 网络 token (JWT): eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6InU0T2ZORlBId0VCb3NIanRyYXVPYlY4
我是 JWT 的新手。我对 JWT 进行了一些研究,并了解到它的框架是“header.claims.signature”。 考虑一个简单的场景,如下所示: 客户通过身份验证 客户可能具有(一个或多个)
我需要知道的最大长度 JSON Web Token (JWT) 在规范中没有相关信息。难道,长度没有限制? 最佳答案 我也一直在努力寻找这个。 我想说 - 尝试确保它低于 7kb。 虽然 JWT 在规
我看到 JWT token 由 A-Z、a-Z、0-9 和特殊字符 - 和 _ 组成。我想知道 JWT token 中允许的字符列表? 最佳答案 来自JWT introduction :“输出是三个用
我正在使用 Jhipster 创建一个应用程序。为此,我想使用 Keycloak 身份验证服务器。但是,一旦我登录,就会收到以下消息:Statut : Internal Server Error (内
我正在使用 Jhipster 创建一个应用程序。为此,我想使用 Keycloak 身份验证服务器。但是,一旦我登录,就会收到以下消息:Statut : Internal Server Error (内
我在我的网站上使用 MEAN 堆栈,用户可以在其中将带有玩家信息的事件(2-4/事件)添加到购物车。有时他们会购买多个事件。我希望此信息不会受到用户操纵(如果他们使用控制台,则在结帐前更改信息),并且
一个 JSON Web token (JWT) 被分成三个 Base-64 编码的部分,这些部分由句点 (“.”) 连接起来。前两部分对 JSON 对象进行编码,第一部分是详细说明签名和散列算法的 h
我正在使用 django rest 框架 JWT 库 http://getblimp.github.io/django-rest-framework-jwt/ JWT token 过期有两个设置 JW
我是一名优秀的程序员,十分优秀!