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/jquery 中将光标更改为等待

    当调用函数时 如何让光标更改为此加载图标以及如何将其更改回 javascript jquery 中的普通光标 在你的 jQuery 中使用 body css cursor progress 然后又恢复正常 body css cursor d
  • 每 3 秒重复一次动画

    我正在使用 WOW js 和 animate css 现在我正在将 CSS 运行到 Infinite 我想知道如何让我的课程运行 3 秒停止并再次开始到无限 My html img src images fork png class for
  • 不和谐机器人 |不和谐.js |类型错误:无法读取未定义的属性“长度”

    我正在制作一个 Discord 机器人 并且正在使用 CodeLyon 的视频作为参考 该错误位于我的 message js 文件中 该文件包含以下内容 require dotenv config create cooldowns map
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 在 webpack 2.x 中使用 autoprefixer 和 postcss

    如何使用autoprefixer使用 webpack 2 x 以前 它曾经是这样的 module loaders test scss loader style css sass postcss postcss gt return autop
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • 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