Javascript非对称加密和认证

2023-12-12

这里的一些人正在开发一个应用程序,其中包含一些可通过登录访问的“安全区域”。在过去,登录表单和后续的“安全”页面都是通过 http 传输的纯文本,因为它是一个用于访问的应用程序。在几乎不可能使用 SSL 的共享服务器上使用(例如 WordPress 等)。大多数人只是耸耸肩,因为这就是他们所期望的——这根本不是一家国家银行。

我们现在正在考虑使用 JavaScript 前端编写下一个版本,其优点是一次性加载所有图像和 CSS,然后使用 extJS(或者可能是 jQuery)将 HTML 写入 DOM。我们希望在将用户输入发送到服务器之前对客户端的用户输入进行加密,然后在将服务器输出呈现为 HTML 之前在浏览器上解密,以便为用户引入某种安全性。减少页面加载时间也有好处,因为我们只来回发送 gzip 压缩的 JSON。

在尝试过程中,我们意识到我们正在寻找的加密基本内容的方法首先也可以作为登录的身份验证机制。

为简单起见...:

  • 用户通过标准 http 连接到登录页面,浏览器在其中下载包含哈希和加密算法(例如 SHA-256 和 AES)的 JavaScript 包。
  • 用户输入username, password and secret进入登录表单。
  • 浏览器 JavaScript 发送一个哈希值username and password通过 AJAX 发送到服务器。这secret仅存储在 JavaScript 中,并且永远不会通过互联网发送。
  • 服务器查找哈希并检索username and secret从数据库中。
  • 服务器发送一个哈希值(与浏览器相同的算法)username and secret返回浏览器。
  • 浏览器 JavaScript 创建一个哈希值username and secret并将其与从服务器发回的哈希值进行比较。
  • 如果相同,浏览器 JavaScript 会加密response with secret并将消息发送回服务器。
  • 服务器解密消息secret来找到预期的response并开始一个新的会话。
  • 后续通信均通过以下方式进行加密和解密secret.

这种类型的系统似乎有一些优点,但我们的想法是否正确:

  • 如果服务器设法创建以下内容的哈希值,则用户知道他们正在与服务器通信username and secret,证明服务器知道并理解username and secret.
  • 如果用户成功加密,服务器就知道用户是真实的response with secret,证明用户知道secret.
  • 任何时候都不是secret曾经以纯文本形式传输过,或者是否可以确定secret来自哈希值。
  • 嗅探器只会找出“安全”URL 并检测查询字符串中的压缩散列和加密。如果他们向格式错误的 URL 发送请求,则不会给出任何响应。如果他们以某种方式设法猜测适当的请求,他们仍然必须能够解密它。

这一切看起来足够快,以至于用户无法察觉。任何人都可以看穿这一点,因为我们都认为我们不应该玩 JavaScript 加密!


不要这样做。请使用 SSL/TLS。看Javascript 密码学被认为是有害的.

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

Javascript非对称加密和认证 的相关文章

  • 在数组/对象中查找项目的最快方法

    在 Javascript AS3 中查找列表或对象中项目的索引的最快方法是什么 我对这两种语言都提出这个要求 因为这两种语言的语法相似 假设 myArray one two three myObject one 1 two 2 three
  • 防火墙后面的 Web 应用程序上的 OAuth——这可能吗?

    我正在尝试构建一个网络应用程序来将事件添加到员工的谷歌日历中 并希望使用 OAuth 进行身份验证 但是 我的 Web 应用程序被迫位于防火墙后面的 Intranet 上 服务器具有出站 Internet 访问权限 但如果您不在 Intra
  • 根据嵌套值使用数组过滤对象数组

    我正在尝试根据某些嵌套对象过滤数组 我准备了一些Fiddle http jsfiddle net NZnN2 249 输入数组如下所示 let arrayOfElements name a subElements surname 1 sur
  • 对自定义打字稿错误实例实施instanceof检查?

    打字稿有这个instanceof 检查自定义错误 https github com Microsoft TypeScript issues 13965问题 但尚不清楚我们需要做什么才能得到instanceof在职的 例如对于这个异常我们如何
  • 按下了哪个提交按钮?

    在这个jsfiddle中 http jsfiddle net littlesandra88 eGRRb http jsfiddle net littlesandra88 eGRRb 我是否提交了自动生成的按钮 每个表行都有一个唯一的 ID
  • 邮件附件媒体类型错误 Gmail API

    我正在尝试通过 Javascript 客户端中的 Gmail API 发送带有附加 jpeg 文件的消息 到目前为止我写的代码如下 ajax type POST url https www googleapis com upload gma
  • 如何在CKEditor 5中监听焦点事件

    我想听一下 CKEditor 5 中的焦点事件 我认为这样的事情会起作用 但回调从未被调用 document querySelector editable ClassicEditor create el then editor gt edi
  • ExtJS 4:克隆商店

    我正在尝试找出如何克隆Ext data Store不保留旧的参考 让我用一些代码更好地解释一下 这是源商店 var source Ext create Ext data Store fields name age data name foo
  • 为什么“dtoa.c”包含这么多代码?

    我将是第一个承认我对低级编程的整体知识有点稀疏的人 我理解许多核心概念 但我不经常使用它们 话虽这么说 我对需要多少代码感到非常惊讶dtoa c http www netlib org fp dtoa c 在过去的几个月里 我一直致力于用
  • History.replaceState 仍然向“浏览历史记录”添加条目

    具体来说 调用以下代码片段 history replaceState undefined undefined value 正确地不会影响当前页面的后退按钮行为 但是will在 浏览历史记录 页面添加一个条目 这是我不想要的 下图是 Chro
  • 使用 easyXDM 调整 IFrame 大小

    我将 iFrame 代码提供给客户 以便他们可以显示我网站上的动态内容 我希望其页面上的 iFrame 能够调整大小以适合我的内容 我按照 easyXDM 网站的说明进行操作 但也许我遗漏了一些东西 我没有收到任何错误 但 iFrame 保
  • JointJS - 处理链接删除点击

    创建链接后 将鼠标悬停在其上会显示红色 X 以将其删除 单击此按钮将触发一系列事件 通过订阅 全部 活动收集 单元格 向下指针 链接 向下指针 cell pointermove x5 似乎可疑 单元格 指针向上 在浏览了文档并花费了太长时间
  • 有没有办法在 TypeScript 2+ 中全局添加类型定义?

    我有一堆简单的 ts files 不是项目 即独立的 ts 脚本 他们使用一些 Node js 功能 TypeScript 和节点类型定义通过安装 npm install g typescript npm install g types n
  • 禁用任何类型的浏览器窗口滚动?

    有没有办法禁用滚动 不仅仅是滚动条 还有浏览器窗口的全部功能 根据您对 Keit 的回答 您不想在打开灯箱时滚动处于活动状态 如果是这种情况 您可以使用以下 css 在打开灯箱的同时向正文添加一个类 这个解决方案的好处是它保留了滚动 空间
  • 如何在 JavaScript 中设置/更新 String 对象的值

    我有一个具有一些属性的对象字符串对象 var obj foo new String bar 我在用字符串对象因为我需要在对象上存储额外的子属性 同时仍然能够获取字符串值 obj foo baz baz obj foo gt bar 我觉得问
  • Javascript / jQuery - 转换特殊 html 字符

    我有一个pre元素中包含一些 html 代码 该代码中有特殊字符 例如 lt 所以它不会破坏页面 然后我有一个 javascript 函数 它获取此 pre 元素的内容 突出显示它 使用 codemirror 并用突出显示的文本替换元素内容
  • 我可以防止将 Leaflet 地图平移到世界边缘之外吗?

    有没有办法限制平移到世界边缘之外 在这幅画中 棕色是世界 灰色是虚空 我想让它不可能像这样平移 Leaflet 允许您控制地图抵抗被拖出边界的程度maxBoundsViscosity选项 值 0 到 1 将其设置为最大值会完全禁用拖动出界
  • 使用 stopPropagation() 处理 React 事件委托

    我有一个 React 项目 应该可以放置在任何网站上 我的想法是 我托管一个 javascript 文件 人们放置一个具有特定 ID 的 div 然后 React 在该 div 中进行渲染 到目前为止 除了点击事件之外 这是有效的 这些事件
  • Amazon S3:奇怪的错误 - “有时”签名不匹配,有时确实如此

    我正在为销售人员开发代码 我们正在使用 Appexchange 的 Force com for Amazon Web Services 应用程序 该应用程序由亚马逊提供 我正在计算机上从 Amazon S3 下载文件 有时我会收到下面提到的
  • html5 canvas 使用图像作为蒙版

    是否可以使用具有形状的图像作为整个画布或画布内图像的蒙版 我想将图像放置在画布中 并在图像上添加蒙版 然后将其另存为新图像 您可以使用 source in globalCompositeOperation 将黑白图像用作蒙版 首先 将蒙版图

随机推荐

  • Java中如何读写XML文件并在保存时将注释节点视为文本节点

    我正在读取从外部系统检索的 Java XML 文件 然后对其进行处理 最终将其保存在本地并将其部署回来 外部系统给我一个包含此节点的 XML 文件
  • C : 创建一个仅使用“write”函数来显示数字的函数

    我怎样才能编写一个基本函数 只需包含在 write 函数中 include
  • 如何使用 swift 5 URLSession 中引入的新结果类型?

    Swift 5 引入了新的 Result 类型来处理异步函数的结果 我想知道如何在 URLSession 中使用这个新的结果类型 我有以下代码 func getCategorByAPI Base Url is from an static
  • 出现错误“不允许更改属性‘osDisk.name’。”使用 Azure Powershell 脚本

    我正在尝试将带有托管磁盘的现有 Azure VM 移至现有可用性集中 但是 当我应用命令时 New AzureRmVM ResourceGroupName rg Location OriginalVM Location VM NewVM D
  • 作业提交时的 Scala fat jar 依赖问题

    我使用 Scala 编写了简单的 kafka 流 它在本地运行良好 我已经采取了 fat jar 并在 scala 集群中提交 提交作业后 我收到 未找到类 错误 如果我提取 fat jar 它在 fat jar 内具有所有依赖项 为什么我
  • 在 Matlab 中每秒打印一次警告

    我试图每秒打印一条警告或仅打印一条消息 例如 已过 1 秒 有可能实现这一点吗 我用 tic toc 和循环尝试过 但还不够 此外 我从来没有得到过一秒钟的时间 是否有一个命令可以每 X 毫秒自动打印一次 有任何想法吗 提前致谢 Use a
  • 如何使用样式/模板格式化 wpf 中的小数位数?

    我正在编写一个 WPF 程序 并且试图找到一种通过样式或模板等可重复方法来格式化 TextBox 中的数据的方法 我有很多文本框 确切地说是 95 个 每个文本框都绑定到自己的数字数据 每个数据都可以定义自己的分辨率 例如 如果数据为 99
  • 将多个精灵作为一个旋转(围绕同一原点)

    我有形成 T 形状的精灵数组 我想围绕同一原点旋转它们 在我的例子中是 box2D 主体原点 如下所示 我的形状在矩阵中定义如下 int array 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
  • scjp 测试中的正则表达式测试[重复]

    这个问题在这里已经有答案了 我正在尝试解决有关正则表达式的 scjp 测试 这是一个代码 import java util regex public class TestRegex public static void main Strin
  • 如何隐藏从 Python 调度的 COM 对象

    我在 Python 中使用 COM 并且希望该对象在后台隐藏运行 使用 Excel 我会 Import win32com client Excel win32com client Dispatch Excel Application Exc
  • &货币更改为¤cy=GBP

    我有一个非常奇怪的问题 我生成的要在电子邮件中发送的查询字符串正在以某种方式更改 我编写的一个旧应用程序根据数据库中的各种参数创建一个 URL dim wpret as string a target blank href a instId
  • 根据javascript中的选择选项显示/隐藏div

    上网搜了一下 学会了如何做到这一点 实施了它 但这不起作用 我想在选择学生时显示 div 学生 在选择教师时显示 div 老师 这是 jsp 文件的一部分 HTML 代码 table tr td td tr table
  • strip_tags 足以从字符串中删除 HTML 吗?

    站点用户可以在站点上注册 并且在注册期间他可以提供名称 我希望这个名称是一个有效的名称 并且不含任何 HTML 和其他时髦字符 strip tags 足够吗 我发现没有单一的功能可以防止用户输入白痴 最好将几种混合在一起 val trim
  • 用 Python 读取 PowerPoint 表格?

    我正在使用 python pptx 模块自动更新 powerpoint 文件中的值 我可以使用以下代码提取文件中的所有文本 from pptx import Presentation prs Presentation path to pre
  • 如何很好地将qint64“转换”为QProgressBar的int

    我正在使用 QFtp 是的 我知道 并且一切正常 使用他们自己的示例中的代码作为指导 http doc qt io archives qt 4 7 network qftp ftpwindow cpp html 我遇到的唯一问题是发送 或接
  • 如何执行 SQL 表中列出的 SQL Server 代理作业

    我试图将所有 SQL Server 代理作业存储在表名称中 并希望根据它们的加载频率来执行它们 CREATE TABLE Maintainance SQLJobName varchar 100 SQL Job Name which need
  • 从 Firebase 函数将数据返回到 Android [重复]

    这个问题在这里已经有答案了 我正在尝试做的事情 只需从 Firebase Cloud Function 返回数据即可 该函数用于在支付网关的服务器中创建支付订单 我所需的有关订单详细信息的数据位于function err data 见下文
  • 像松弛评论框反应原生的动画

    我正在开发一个评论框 在向上滑动操作时将其扩展到设备的高度 并在向下滑动操作时返回到其原始高度 但我无法向其中添加动画 因为该功能无法按照我想要的方式工作 作为参考 我们可以讨论松弛评论框动画 我的代码如下 code 小吃链接 https
  • split(" +") 和 split(" ") 不同

    我想消除字符串中的真空 String input java example java aaa bbb String temp input trim split 结果是 java 示例 javaaaabbb 但我想要的结果是 java示例 j
  • Javascript非对称加密和认证

    这里的一些人正在开发一个应用程序 其中包含一些可通过登录访问的 安全区域 在过去 登录表单和后续的 安全 页面都是通过 http 传输的纯文本 因为它是一个用于访问的应用程序 在几乎不可能使用 SSL 的共享服务器上使用 例如 WordPr