Javascript加密web请求
javascript encryption with web requests
我们有一个有趣的问题。我们有客户,想要使用我们的基于web的应用程序(后端/数据库与我们在一起)。但是他们想加密病人的信息,这样我们公司的人就看不到了。会有某种javascript解决方案吗?或者在发送给我们之前使用他们的加密?
您可以(尽管在安全社区中,这并不被视为可行的解决方案 1,2 )向他们发送javascript加密库,但这并不能解决问题。
注意:在这个答案中,我将假设您的连接使用SSL/TLS,因为没有它,您无法安全地与客户端通信。
问题是客户需要信任你。他们将从您的服务器下载javascript代码。因此,服务器的所有者将总是能够改变javascript的行为方式。这是因为,即使您向客户端发送了一个完全有效且经过良好审计的javascript加密库,客户端也无法验证这一点。他们唯一能保证的是,他们从一个主机那里得到了一些东西,他们的浏览器根据SSL/TLS证书选择信任这个主机。
通常,人们在这个时候开始提出一个恶意的中间人场景。这种担心是情绪:要么你的连接是正确的SSL/TLS保护,或者它不是。如果中间人场景是可能的,那么客户端从服务器下载的javascript加密库也是可疑的。换句话说,如果SSL/TLS层以某种方式被破坏,那么客户端加密也应该被认为被破坏了。
如果他们足够信任主机,相信他们不会篡改javascript并确实在客户端执行所有加密,那么他们也可能相信你不会在服务器端滥用他们的数据。这样就省去了很多(不必要的)复杂性。更少的复杂性导致更干净的设置,更容易审计。
免责声明:如果您使用医疗数据,可能需要遵守一些法律(取决于您所在的国家/州)。如果你对这个级别的问题感到不舒服,你可能应该聘请一些专家,或者接受这个请求比你能轻松构建的要复杂,并告诉你的客户,他们会找到一个在处理敏感数据方面有更多经验的公司。
有一个问题。在不知道如何发生的情况下,您希望如何实现en/解密?;)
一些简化的基本加密理论:(请记住,我也不是这方面的专家)
在今天的密码学中,我们主要使用两种不同类型的加密,它们要么是对称的,要么是不对称的(维基百科:Public-key_cryptography),我们专注于对称的。你不需要知道他们实际上是如何加密数据的,但你只需要知道它是基于给定的密钥/密码。它们之间的区别在于对称加密使用1个密钥,加密和解密使用2种密钥,但目前你不需要。因此,有许多不同的算法可以以一种或另一种方式进行加密,只要使用的密钥足够强和随机,知道使用哪种算法应该不是问题,以便即使它的暴力也能持续多年。
根据使用的密钥,加密数据的输出将有所不同,因此具有密码"bar"的字符串"foo"与具有不同密码的同一文本(foo)不同。因此,如果不知道使用的是哪个键,就不可能获得值。
我从来没有在JS中使用过加密库,所以我不能推荐你,但我确信有很多可以在几行中使用的。基于对称加密的一个非常好的算法是AES,它也有很多可以使用的实现;)
所以现在你只需要在提交表单上添加一个按钮,要求密码加密,然后在视图/任何页面上添加一个按钮,希望使用密码解密数据。发送时,您可以将加密的数据值发送到未加密的数据密钥(不是加密密钥!)旁边,这样您就知道哪个值是什么了。
这里是一个网站,你可以看到它的行动。请注意,只要稍微更改一下密码,加密的值就会完全不同。您还可以在那里找到一些代码。http://www.movable-type.co.uk/scripts/aes.html
我希望你能理解它,它不是太乱。我的英语不是很好,所以请原谅我糟糕的语法x)
- web工作程序中不同的服务器请求行为
- Web 工作线程中的同步 XHR 请求是否仍会锁定浏览器
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- 从 Web Worker 执行 AJAX 请求是否可行
- 使用Java脚本跟踪网页中是否有Ajax请求,或者通过Selenium Web驱动程序拦截XMLHttpRequest
- Python Flask Web服务器未接收到JSON ajax POST请求,服务器返回HTTP 200 OPTION
- 如何在URL中不指定.html、.json的情况下配置web.xml来服务任何请求
- "执行处理程序'的子请求时出错;System.Web.UI.Page'"同时使用JQu
- 无法连接到网络服务器.验证 Web 服务器是否正在运行,并且传入的 http 请求未被防火墙阻止
- 如何显示弹出窗口以在使用纯 JavaScript 从 Web 服务器获取/请求数据时禁用搜索按钮
- 阻止 Web 视图发出定期请求
- 通过 Javascript 向 Azure 上的 WCF Web 服务发出 SOAP 请求
- 节点.JS - 如何限制多承诺的请求以防止溢出(Web 抓取)
- WCF Web 服务在通过 Javascript 调用时返回“错误请求”错误
- 多个 Web Worker ajax 请求,但并非所有请求都返回
- 节点.js简单的 Web 服务器请求生命周期
- 向 Web 窗体中的控制方法发出 ajax 请求
- 异步请求 Web 资源的特定部分
- 请求Web服务获取JSON
- 请求:web应用程序的最小框架