- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 cookie 中实现 jwt,以便在单页应用程序 react 前端上进行身份验证,该前端与运行 Express 的各种 Node 微服务进行通信。
我这样做是因为将 jwt 存储在sessionstorage 中似乎会使应用程序容易受到 XSS 攻击。
但是,通过使用 cookie,API 现在很容易受到 csrf 攻击。
传统上,通过创建 csrf token 、将其存储在服务器 session 中,然后将其呈现在隐藏的表单字段中,可以缓解 csrf 攻击。然后,在提交表单后,将根据服务器 session 值检查 csrf token 的值以检查它们是否匹配。
我不能使用这种方法:- 服务器是无状态的- 没有服务器端渲染。
所以我很困惑应该采用哪种 csrf 方法。我读过双重提交方法,您在每个 ajax 请求上提交一个 csrf token ,并将相同的值存储在 cookie 中,然后服务器检查两者是否匹配。
但是,我无法首先将初始 csrf token 放入 html 中,因为没有服务器端渲染。
在没有服务器端渲染的无状态架构中,在具有 csrf 保护的 cookie 中实现 jwt 的最佳实践是什么?
最佳答案
不要将 JWT token 存储在 cookie 中
CSRF 攻击是可能的,因为浏览器会通过 HTTP 请求发送 cookie,即使它们是由在第 3 方站点上运行的脚本发起的。因此evilsite.com
可能会发送 DELETE http://yoursite.com/items/1
向您的网络服务发出请求。此端点要求您登录,但因为浏览器将发送为 yoursite.com
存储的任何 cookie ,如果身份验证是基于 cookie 的,则 evilsite.com
可以利用您的身份验证方法并调用您的用户不打算代表他们调用的经过身份验证的方法。
但是,身份验证不必基于 cookie。如果您正在创建客户端呈现的 JavaScript 应用程序,那么将身份验证 token 作为 HTTP header 而不是在 cookie 中发送很简单。如果你这样做,那么 evilsite.com
是不可能的使用您的 token (他们只能使用存储在 cookie 中的 token ),并且您从一开始就不会遇到问题。
关于node.js - Cookie 中的 JWT 身份验证,具有无状态服务器且无服务器端渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52367016/
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
我是一名优秀的程序员,十分优秀!