我正在寻找有关我想做什么的建议。 目前,我使用服务器 A 通过 HTTP 从服务器 B 请求文件。
服务器 B 检查请求的路径是否存在,并通过 HTTP 返回文件内容,作为字符串。一切都清楚了。
我想做的是加密传输,所以在将文件内容发送回服务器 A 之前,我想以服务器 B 能够逆转的方式保护它。
我想要它快速、安全(salt)并且不要太大。 (文件可以包含数千个字符)
实现该目标的最佳方法是什么?我在两台服务器上都使用 node.js。
我也在考虑添加身份验证并通过 HTTPS 来保护内容,假设保护(加密/等...)不会被破坏,它有用吗? (Auth 可以限制请求并避免使用过多的带宽,但是 HTTPS 真的值得吗?)
我对密码不太了解,用它可能不合适,请指导我。
最佳答案
要加密 HTTP 请求的内容,请使用 HTTPS。不要费心重新发明轮子。
HTTPS 将使能够拦截这些服务器之间通信的人无法读取您来回发送的文件。 http://book.mixu.net/node/ch10.html描述了在客户端和服务器上的 Node 应用程序中打开 HTTPS 的步骤。如果您在 Node 应用程序前使用 Nginx 或 Apache 作为代理,您也可以找到它们的说明。
HTTPS 不会限制对服务器的访问。为此,您需要为此使用身份验证/授权系统。 http://passportjs.org是用于此目的的非常标准的 NodeJS 模块。
I want it fast, secure (salt) and not too big. (The files can contain thousands of characters)
Salt 是一个在这里不适用的概念。
您在单向哈希函数(如 MD5 或 SHA)上使用盐,这样如果您对同一个字符串进行不同次加密,就不会得到相同的结果。
如果用户 A 和 B 的密码均为“Password123”,则它们将是数据库中的 2 个不同的散列字符串。这意味着破解用户A的密码不会自动破解用户B的密码。
关于javascript - 使用 node.js 通过 HTTP 将文件加密为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279687/