Angular 2/4 存储令牌的位置

2024-04-30

我有一个用于生成令牌的 REST API,我在 Angular 4 客户端中使用它,但问题是在哪里存储该令牌。

在互联网上我发现我可以存储在本地存储或cookie中。

所以我的问题是,如果存储令牌是本地存储,并且我刚刚从另一个浏览器复制了有效令牌,那么我将拥有一个有效令牌,因此像这样存储令牌有任何安全性,并且基本上相同与cookies,或者也许我错过了一些重要信息?


这是一篇关于令牌/Cookie 的完整文章,可以为您提供有关此主题的大量知识:auth0:Cookie VS 令牌 https://auth0.com/blog/cookies-vs-tokens-definitive-guide/

我将引用最重要的部分,以便您了解接下来会发生什么:

网站面临的两个最常见的攻击媒介是跨站脚本 (XSS) 和跨站请求伪造(XSRF 或 CSRF)。

当外部实体能够在您的网站或应用程序中执行代码时,就会发生跨站点脚本攻击。

如果您将 JWT 与本地存储结合使用,跨站点请求伪造攻击就不是问题。另一方面,如果您的用例要求您将 JWT 存储在 cookie 中,您将需要防范 XSRF。

我们的首席技术官过去曾表示,与 XSRF 攻击相比,XSS 攻击更容易处理,因为它们通常更容易被理解。

所以基本上总结一下:

  • XSS攻击是一个问题Tokens and 本地存储。但这并不是因为 Angular 可以清理所有内容,有效防止XSS攻击。 (https://angular.io/guide/security#angulars-cross-site-scripting-security-model https://angular.io/guide/security#angulars-cross-site-scripting-security-model)
  • XSRF攻击是一个问题Cookies,并且您必须建立自己的安全框架来处理它们。

因此,我建议使用标准 JWT 令牌方法来管理您的令牌。由于您的令牌是用JWT格式,我认为这是最安全的解决方案。当然,标准令牌需要是加密的 or signed(不一样)要真正安全。

使用适当的库(例如https://github.com/auth0/angular2-jwt https://github.com/auth0/angular2-jwt)


更进一步:我想您的令牌将用于身份验证,并且要注意人们已经使用过它并且知道使用它们的好/坏做法。

您应该看看如何从他们使用的工作网站(例如 Twitter / Facebook 等)管理身份验证刷新令牌。以下是您可能感兴趣的一些其他链接:

  • https://auth0.com/learn/refresh-tokens/ https://auth0.com/learn/refresh-tokens/
  • https://auth0.com/docs/tokens/refresh-token/current https://auth0.com/docs/tokens/refresh-token/current

EDIT :有关 JWT 最佳实践的其他链接:

  • https://dev.to/neilmadden/7-best-practices-for-json-web-tokens https://dev.to/neilmadden/7-best-practices-for-json-web-tokens(第 6 部分和第 7 部分)

  • https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 2/4 存储令牌的位置 的相关文章

随机推荐

  • 如何在 RHEL 上更新 git 版本?

    我刚刚在 GCP 上创建了一个新的 RHEL 虚拟机来在上面运行一些 Kubernetes 它上面没有安装任何 git I used yum包管理器在其上安装git 但它没有安装最新版本的git 当前版本 2 38 0 2022 年 10
  • MATLAB:涉及大数的计算

    如何在 MATLAB 中执行涉及大量数字的计算 举一个简单的例子 任意精度计算器将显示 1 120 132 370 260 约为 1 56 但 MATLAB 无法执行此类计算 power 120 132 factorial 370 fact
  • .NET 中的嵌套事务

    我怎样才能执行与此等效的操作 我的理解是 这对于 TransactionScopes 来说是不可能的 https stackoverflow com questions 2741988 nested child transactionsco
  • 什么是 ADO.NET?

    我编写了一些 Access 数据库并使用了一些轻型 VBA 并且有一个 OO 类 现在我正在编写一个 C 数据库应用程序 我已经安装并连接了 VS 和 System Data SQLite 并输入了我的表和列 但这就是我陷入困境的地方 我正
  • 如何在 $match 内的 mongodb 聚合查询中使用 $regex

    我正在尝试使用 regex http docs mongodb org manual reference operator regex within match http docs mongodb org manual reference
  • 具有动态参数的 Oracle Lag 函数

    我有一个具体的问题 我有一个包含无效值的表 我需要替换无效值 此处0 与之前的值大于0 困难是 使用更新或插入对我来说是不合适的 游标和更新就可以了 我唯一的方法是使用 Select 语句 当我使用lag col1 1 当情况发生时 我只得
  • 从应用程序中删除死代码的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常觉得 在多次迭代我的代码之后 我留下了一些函数 类或其他代码行 这些代码在以前的版本中有意义 但对于新版本来说并不是很有用 我知道探查器可
  • 如何使 scalatest 与 Spraytestkit 和 HttpServiceActor 一起工作

    我在看Spray 1 3 1 测试套件文档 http spray io documentation 1 2 1 spray testkit 但找不到下面我需要的正确示例 我有这个样本spray 1 3 1 service trait MyS
  • 如何在java中创建保留方法参数注释的动态代理?

    我目前正在尝试代理一些现有的 JAX RS 资源 以便允许我使用 Hibernate Validator 的方法验证支持 但是 当我代理我的类 当前使用 cglib 2 2 时 代理类中的参数上不存在 FormParam 注释 因此 JAX
  • firebase:“无法解析身份验证令牌。”

    你好 我正在使用 firebase 和 php 并使用这个library https github com ktamas77 firebase php supported commands 我收到此错误 无法解析身份验证令牌 我的身份验证令
  • Visual Studio Professional 2013 Update 5 中的“在线服务不可用”问题

    我一直在 vscode 2013 工作直到今天 但是 当我今天早上尝试打开 IDE 时 它收到 您的许可证已过时 必须更新 错误消息 如下所示 在我尝试更新许可证和登录操作之后 当我尝试这两个时 它得到 在线服务不可用 请稍后重试 错误消息
  • 将文本环绕在 div 两侧

    这是我试图实现的目标 与以下HTML div p some text p div Awesome content div div 有这个 text text text text text text text text text text t
  • data.table .SD 的 LHS 为 :=

    这是参考一个不同的问题 https stackoverflow com questions 26804362 iteratively create columns based on grouped variables 26805158 26
  • 从 IntelliJ IDEA 中的版本控制中删除文件

    我正在使用 IntelliJ IDEA 社区版 2016 1 我已将我的项目放在 Git 下 并将其托管在 GitHub 上 When I first hit that Share Project on GitHub button ever
  • 转储 $mft 文件的内容

    对于一些商业的我正在做的项目我需要能够读取 mft 文件中存储的实际数据 我找到了一个gpl lib http www codeproject com KB files NTFSParseLib aspx artkw ntfs这可能会有所帮
  • 如何在 Xcode 中保持标题注释最新

    Xcode 习惯于将各种 冗余 信息放在它创建的每个代码文件的顶部 其中包含版权声明 类名 项目名和客户端名称 不管你喜欢与否 一旦你创建了一个新的类 A 然后将其重构为 B 信息就已经是错误的 评论会一直说这是 A h 或 A m 此外
  • 对所有列实施搜索过滤器

    我在 PostgreSQL 中找到了这个搜索示例http www postgresql org docs current interactive textsearch tables html TEXTSEARCH TABLES SEARCH
  • 使用接口将泛型委托转换为另一种类型

    使用 NET 4 0 好的 所以我有 private Dictionary
  • flink - 使用匕首注入 - 不可序列化?

    我使用 Flink 最新通过 git 从 kafka 流式传输到 cassandra 为了简化单元测试 我通过 Dagger 添加依赖注入 ObjectGraph 似乎已正确设置自身 但 内部对象 被 Flink 标记为 不可序列化 如果我
  • Angular 2/4 存储令牌的位置

    我有一个用于生成令牌的 REST API 我在 Angular 4 客户端中使用它 但问题是在哪里存储该令牌 在互联网上我发现我可以存储在本地存储或cookie中 所以我的问题是 如果存储令牌是本地存储 并且我刚刚从另一个浏览器复制了有效令