当前位置: 首页 > 知识库问答 >
问题:

在浏览器中存储JWT的位置?如何防范CSRF?

尚嘉勋
2023-03-14

我知道基于cookie的身份验证。可以应用SSL和HttpOnly标志来保护基于Cookie的身份验证免受MITM和XSS的攻击。然而,需要采取更多的特别措施,以保护它免受CSRF的影响。他们只是有点复杂。(参考)

最近,我发现JSON Web令牌(JWT)作为一种身份验证解决方案非常热门。我知道JWT的编码、解码和验证。但是,我不明白为什么有些网站/教程告诉如果使用JWT就不需要CSRF保护。我看了相当多的书,试着总结一下下面的问题。我只是希望有人能提供JWT的大图,澄清我对JWT误解的概念。

另外,我发现还有一个博客显示使用“授权头”和“承载”来发送JWT。我不明白博客所说的方法。谁能解释更多关于“授权头”和“携带者”的信息吗?这是否使HTTP传输的JWT成为所有请求的头部?如果是,CSRF怎么样?

共有1个答案

宋铭
2023-03-14

JWT令牌很受欢迎,因为它们被用作新的授权和身份验证协议(如OAuth2.0和OpenID Connect)中的默认令牌格式。

当令牌存储在cookie中时,浏览器会自动将其与每个请求一起发送到同一域,但这仍然容易受到CSRF攻击。

承载认证是HTTP中定义的认证方案之一。它基本上意味着您将(JWT)令牌粘贴在请求的授权HTTP头中。浏览器不会自动为您这样做,所以不适合保护您的网站。由于浏览器不会自动将报头添加到您的请求中,因此它不容易受到CSRF攻击,这取决于您的身份验证信息是否自动提交到原始域。

承载方案通常用于保护通过AJAX调用或移动客户端使用的web API(REST服务)。

 类似资料:
  • 我第一次使用JSON Web令牌(JWT)。我正在制作一个节点。js应用程序。我想使用JWT进行身份验证。根据文档,我将JSON令牌返回到前端。 但是我不知道如何将这个JSON令牌保存到我的浏览器头中,这样它就不会丢失,并随头一起再次发送到后端。如何将它保存在我的浏览器存储中,并在每次向后端发送请求时将其添加到请求头中?

  • 问题内容: 我需要停止浏览器存储用户名和密码值,因为我正在处理包含更多安全数据的Web应用程序。客户要求我这样做。 我尝试了HTML表单和密码字段中的属性。但它无法在最新的浏览器(例如Chrome 55,Firefox 38+,IE 11等)中运行。 最好的解决方案是什么? 问题答案: 感谢您给我回复。我点击了以下链接 禁用浏览器的“保存密码”功能 我通过仅在输入中添加&属性来解决此问题,如下所示

  • 情景: 浏览器(用户)向服务提供商(SP)请求资源 SP(使用SAML请求)重定向到身份提供程序(IdP) 由于是第一次登录,用户将向(IdP)提供其有效凭据 然后,IdP将浏览器(带有包含SAML令牌的SAML响应)重定向到SP页面 我有两个问题: A、 在步骤4中,浏览器是否存储或缓存SAML响应和/或SAML令牌? B.如果是,什么样的事情(属性?超时?协议?)阻止我获取存储的SAML令牌。

  • 我试图在我的认证系统中实现JWT,我有几个问题。要存储令牌,我可以使用Cookie,但也可以使用或。 哪一个是最好的选择? 我已经读到JWT保护网站不受CSRF的影响。但是,如果我将JWT令牌保存在cookie存储中,我无法想象这将如何工作。 那么它将如何防止CSRF? 更新1 我看到一些使用示例,如下所示: 当我从浏览器向服务器发出请求时,如何实现这一点?我还看到一些人在URL中实现了令牌: 如

  • 问题内容: 如何防止浏览器缓存Ajax结果?我有事件触发的Ajax脚本,仅在清除浏览器数据后才显示结果。 在IE6和Firefox 3.0.10中测试 问题答案: 将随机查询字符串添加到您要发送的URL。 例如,如果将Ajax请求发送到“ http://www.xyz.com/a ”,则在末尾添加一个随机字符串:“ http://www.xyz.com/a?q=39058459ieutm39 ”

  • 问题内容: 我正在尝试在身份验证系统中实现JWT,但我有几个问题。要存储令牌,我可以使用Cookie,但也可以使用或。 哪个是最佳选择? 我读过,JWT保护站点免受CSRF的侵害。但是,假设我将JWT令牌保存在cookie存储中,我无法想象它将如何工作。 那么如何保护它免受CSRF的侵害? 更新1 我看到了一些用法示例,如下所示: 当我从浏览器向服务器发出请求时,该如何实现?我还看到有人在URL中