如果您可以解码 JWT,它们的安全性如何?

2023-12-05

如果我得到一个JWT我可以解码有效负载,这如何安全?难道我不能从标头中获取令牌,解码并更改有效负载中的用户信息,然后使用相同的正确编码秘密将其发送回来吗?

我知道它们必须是安全的,但我真的很想了解这些技术。我缺少什么?


JWT 可以进行签名、加密或两者兼而有之。如果令牌经过签名但未加密,则每个人都可以读取其内容,但当您不知道私钥时,则无法更改它。否则,接收者会注意到签名不再匹配。

回答您的评论:我不确定我是否正确理解您的评论。只是为了确定:您知道并了解数字签名吗?我将仅简要解释一种变体(HMAC,它是对称的,但还有许多其他变体)。

假设 Alice 想向 Bob 发送 JWT。他们都知道一些共同的秘密。马洛里不知道这个秘密,但想干涉和改变智威汤逊。为了防止这种情况发生,爱丽丝计算了Hash(payload + secret)并将其附加为签名。

当Bob收到消息时,还可以计算Hash(payload + secret)检查签名是否匹配。 但是,如果 Mallory 更改了内容中的某些内容,她将无法计算匹配的签名(这将是Hash(newContent + secret))。她不知道这个秘密,也没有办法找到它。 这意味着如果她更改了某些内容,签名将不再匹配,Bob 将不再接受 JWT。

假设我向另一个人发送消息{"id":1}并用以下内容签名Hash(content + secret)。 (+在这里只是连接)。我使用SHA256哈希函数,得到的签名是:330e7b0775561c6e95797d4dd306a150046e239986f0a1373230fda0235bda8c。现在轮到你了:扮演 Mallory 的角色并尝试签署消息{"id":2}。你不能,因为你不知道我使用了哪个秘密。如果我假设收件人知道这个秘密,他可以计算任何消息的签名并检查它是否正确。

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

如果您可以解码 JWT,它们的安全性如何? 的相关文章

  • jwt.io 上的“秘密 Base64 编码”是什么意思以及如何使用 `openssl dgst` 模拟它

    我尝试从 jwt io 获得相同的输出openssl 只要我这样做not mark 秘密base64编码 我可以把签名之前的部分 运行它 echo n pasted data from jwt io openssl dgst binary
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • 如何在 access_token 中添加角色声明,目前它是在 id_token 中?

    我正在使用 PKCE 跟踪身份验证代码流 我的身份提供程序是 Azure Active Directory 我从应用程序注册创建了一个应用程序 客户端应用程序 在清单中 我添加了如下所示的 appRoles appRoles allowed
  • 警告:您的 git 版本是 1.9.3。存在严重的安全漏洞

    我在部署到 Heroku 期间收到有关 git 1 9 3 严重安全漏洞的警告 我尝试通过 homebrew 更新 git 但发现 git 最初并不是通过 homebrew 安装的 然后我通过自制程序安装了它 brew update bre
  • 使用 CreateRestrictedToken(LUA_TOKEN) 从提升的进程创建低/中进程

    我正在尝试从提升的进程创建中或低完整性进程 我知道还有其他类似的问题 但它们主要关注使用资源管理器或任务计划程序等解决方法 我想坚持使用CreateRestrictedToken CreateProcessAsUser 我认为一定可以以某种
  • 如何为移动应用程序创建无密码登录

    我有兴趣在移动应用程序和 API 之间构建某种无密码登录 假设我可以控制两者 动机是必须登录对用户来说非常烦人并且存在安全风险 例如 用户将重复使用现有密码 我希望用户能够立即开始使用该应用程序 我想知道是否有一些可行的技术 例如 在移动设
  • 是否可以在 PHP 中使用 file_get_contents 来破坏 CSRF 令牌验证

    在每个会话的表单上使用令牌的 CSRF 预防方法是一种流行的方法 但是 我不明白这种令牌方式如何保护file get contentsPHP 可以获取跨域文件表单的内容 gt 它可以获取表单上的令牌并使用它 那么这种token方式是如何运作
  • 在数据库中存储密码的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 什么是 API 密钥? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如今 我几乎在每个跨服务应用程序中都看到这个词 API 密钥到底是什么以及它的用途是什么 另外 公共 API 密钥和私有 API 密钥
  • 使用 Javascript eval() 100% 安全吗?

    我正在编写一个生成 Javascript 代码的 PHP 库 Javascript 代码有许多名为component001 component002 etc 页面通过 AJAX 动态加载 我需要通过 URL 变量传递组件的名称 然后由脚本进
  • 清理 html 字符串中的所有脚本

    HTML5 剪贴板很棒 但我正在寻找一种使其安全的方法 用户正在将文本 html 粘贴到我的网页中 这允许他们粘贴图像 表格等 我正在寻找一种方法 在将粘贴的内容添加到页面之前删除所有脚本 我需要删除
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • Django REST JWT 刷新

    使用 JWT 实施 Django REST 和身份验证 对于 JWT 令牌 我们必须在过期之前刷新它 过期后 JWT 将不会提供新的令牌 对于我的移动设备 我需要每 10 分钟刷新一次令牌 JWT EXPIRATION DELTA 如果用户
  • 访问被拒绝(“java.io.FilePermission”“执行”)

    我是初学者 这是我写的第一个小程序 我想用小程序运行 exe 应用程序 java代码 package appletexample import java io import java awt import java applet Apple
  • 如何检查 NTAccount 对象代表组还是用户?

    使用返回的访问规则时 GetAccessRules True True GetType System Security Principal NTAccount 如何判断每个规则中引用的 NTAccount 对象是用户帐户还是组 Update
  • 检查字符串是否是哈希值

    我正在使用 SHA 512 来散列我的密码 当然还有盐 我认为我想要的不可能 但无论如何我们还是要问一下 有没有办法检查字符串是否已经是 SHA 512 或其他算法 哈希值 当用户登录时 我想检查他的密码 如果它仍然是纯文本 则应将其转换为
  • 使用 PBKDF2 和 SHA256 生成 128 位 AES 密钥是否安全?

    我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥 SHA1 也是 128 位 所以我想将其与 PBKDF2 一起使用 但它已损坏 所以我选择使用 SHA256 这是否安全 或者散列大小和生成的密钥大小之间的差异是否
  • 从 HTTPS 重定向到 HTTP 的安全问题?

    我在一些博客上读过 抱歉没有提及参考资料 但我找不到了 如果您将用户从 https 页面重定向到 http 页面 您将失去保护网站安全的所有工作 那么 有人可以向我解释一下在以下情况下我是对还是错 在登录页面上使用 https 然后使用 h
  • 对客户端 JavaScript 计算器使用 eval 安全吗?

    我正在制作一个计算器 作为用户浏览器的静态 HTML 页面 该页面并非旨在将任何信息提交回服务器 除了这个计算器之外 网页上不会出现任何其他内容 在这种情况下使用 eval 安全吗 或者换句话说 在这种情况下使用 eval 是否会导致额外的
  • FormsAuthentication:安全吗?

    Using 表单验证构建成asp net创建一个为经过身份验证的用户创建 cookie 的登录系统非常快速且简单 FormsAuthentication SetAuthCookie uniqueUsername false 与中的一些代码配

随机推荐

  • 将训练数据拆分为每个类的相同行数

    我有一个非常大的数据集 大约有 314554097 行和 3 列 第三列是班级 该数据集有两个类 0 和 1 我需要将数据分为测试数据和训练数据 要分割我可以使用的数据 from sklearn cross validation impor
  • 处理 contentEditable DIV 上的换行符

    我有一个问题contenteditableSAFARI CHROME 上的换行符 当我在 contentEditable 上按 返回 时 div 而不是创建一个 br 如 Firefox 他们创建了一个新的 div div Somethin
  • PostgreSQL 在触发器函数中动态修改新记录中的字段

    我有一个包含 ID 和用户名 以及其他详细信息 的用户表 以及引用该表的其他几个表 其中包含各种列名称 CONSTRAINT some name FOREIGN KEY columnname REFERENCES user userid 我
  • 在 OpenCV 中复制像素值

    我有 RGB 图像 例如尺寸为 2x2 如下 0 14 255 75 156 255 45 255 234 236 141 255 我想将每个像素 所有 RGB 通道 复制 2x2 次并获得如下所示的图像 0 14 255 0 14 255
  • 什么是 Irvine32 库以及我们为什么使用它?

    我想知道Irvine32汇编语言库是什么 我想要一个定义以及我们为什么使用这个库 我想知道汇编语言中的 Irvine32 库是什么 Irvine32 库是有用函数的集合 您可以查看在线文档了解它们的列表和更多详细信息 我想要一个防御以及为什
  • Google 日历 API - 插入活动 - 通过电子邮件通知组织者

    使用 Google 日历 API 事件 插入 我代表用户在用户的日历中创建一个事件并将他们设置为组织者 我还邀请了一位客人 我希望组织者收到类似于来宾可能收到的电子邮件通知 我尝试使用 sendUpdates 参数 但它只通知客人 有没有办
  • 我们如何使用这些指令在汇编中使用跳转?

    据我所知 组装中的跳跃基本上是从一个位置到另一个位置 说我们有 804828f 74 05 je XXXXXXX 8048291 e8 1e 00 00 00 call 80482b4 根据这本书 我真正要做的就是将 0x05 添加到 80
  • Visual Studios 在构建项目时反复出现 PDB API 调用失败

    所以我有一个项目位于另一个目录中 我将其复制并移动到另一个目录中 以便将其转储到之前运行早期版本代码的本地 git 存储库中 我知道为什么我要很好地复制这些内容 这是一个很长的故事并且无关紧要 在尝试在 Visual Studios 201
  • 奇怪的错误,链接在 jquery 'tabs+accordion' 中不起作用[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是新来的 到处寻找答案但找不到 我正在使用 Codecanyon 的这个很棒的选项卡
  • 用法相当不同

    我想在我的小型 Web 项目中使用这个出色的 Javascript 库 http prettydiff com 我已经下载了 PrettyDiff js 和 ViewDiff js 我一直在研究如何使用它 但似乎找不到任何有关如何获取 Ja
  • Composer 需要本地包

    我有几个正在协同开发的库 Foo 和 Bar 但在技术上仍然是独立的 以前我刚刚重新定义了自动加载器 Foo Foo src 但现在我已经向 Foo 添加了 Guzzle 依赖项 Bar 翻转了它的盖子 因为它不是它的依赖项之一 目录结构
  • Python中递归子集和

    我很乐意得到一些帮助 我有以下问题 我得到了一个数字列表seq和一个目标数字 我需要写两件事 返回的递归解决方案True如果存在等于目标数的子序列之和并且False否则 例子 subset sum 1 1 5 4 0 True subset
  • 正则表达式匹配不带连续空格的用户名

    我正在努力制作一个 javascript 正则表达式来满足以下要求 第一个字符必须是字母 a zA Z 其余的可以是任何字母 任何数字 连字符 点 下划线和空格 但没有连续的空格 例如 连续两个或多个空格 长度必须在 3 到 25 之间 含
  • 在Qt中fork后获取进程的PID

    我正在创建一个成功分叉的 Qt C 控制台应用程序 当我在 fork 之前调用 QCoreApplication applicationPid 然后在 fork 之后 在子进程中 调用 QCoreApplication applicatio
  • 如何正确锁定 Task.Run() 块

    我正在编写一个应用程序 其中使用多种方法来访问某些共享资源 因此通过以下方式实现了一些安全性lock thisLock 一切都很好 直到我不得不在异步任务中使用资源 这是代码 private object thisLock new obje
  • 如何使用 Razor 语法在 ASP.NET MVC 4 中获取文本中 URL 的链接?

    我有一个带有文本字段的模型 文本can包含多个 URL 它不必包含 URL 也没有特定的格式 Using Html DisplayFor model gt model TextWithSomeUrls 当然 文本和 URL 的显示方式与普通
  • 使用 python2 和 python3 的相同代码进行编码+加密+填充时出现问题[重复]

    这个问题在这里已经有答案了 免责声明 我了解以下内容not适合在生产环境中提供 安全 它只是比对存储在我的系统上的敏感数据使用 XOR 或 rot13 更好一点 我将以下代码放在一起 以允许我对这些敏感值使用 AES 加密 AES 需要 1
  • 无法在真实设备上使用 Appium 识别 iOS hyprid 应用程序自动化中 WEBVIEW 中的元素

    我试图使用 ionic2 Angular2 和 typescript 来自动化混合应用程序构建 我正在使用 C 来编写代码 测试在 BDD specflow 中 版本 iOS 9 3 1 代码 7 3 阿皮姆 1 4 13 将上下文切换到
  • TypeScript 实用程序类型优于可区分的联合类型

    给定一个像这样的受歧视联合类型 type HomeRoute name Home type PageRoute name Page id number type SearchRoute name Search text string lim
  • 如果您可以解码 JWT,它们的安全性如何?

    如果我得到一个JWT我可以解码有效负载 这如何安全 难道我不能从标头中获取令牌 解码并更改有效负载中的用户信息 然后使用相同的正确编码秘密将其发送回来吗 我知道它们必须是安全的 但我真的很想了解这些技术 我缺少什么 JWT 可以进行签名 加