如何为 REST API 身份验证加密密码

How to Encrypt password for REST API authentication

有很多关于如何保护 REST API 访问的资源,但这不是我要找的。我将使用提供的 REST API 和 基本身份验证 (这不能轻易更改 :( ).

显然我可以选择:

var requestOptions = {
    hostname: "rest.api.url.com",
    path: "/path/",
    auth: "username:password"
};

var req = http.request(requestOptions, function (res) {
    // some code here
    });

有没有办法在脚本中不以纯文本形式提供密码?

Is there a way to not provide password in plain text in the [JavaScript]?

客户端 JavaScript 总是容易受到篡改和修改,包括反转您存储在客户端脚本中的任何“加密”密码。您可以随心所欲地混淆您的代码,但如果密码以任何形式存在于您的客户端脚本中,则它是可访问的。

I am going to use a provided REST API with Basic Authentication (and this cannot be changed easily

由于您无法将 REST API 更改为使用令牌或 SSL 之类的东西,因此想到的一种解决方案是在您的服务器之间设置一个 中介 和 REST API, use SSL。与服务器上的某些服务器端脚本进行安全通信,并让此脚本代理来自 REST API.

的请求和响应

资源:

  • How to encrypt data in javascript and decrypt in php?
  • Secure communication between JavaScript and a Web service in PHP
  • How to secure the password while it being sent using AJAX?

您可以使用您喜欢的任何加密方式对其进行编码,但是您的加密技术仍将存在于客户端。此处正确的做法是设置 SSL 证书,以便您的请求使用该证书进行加密。

此外,为了减少发送密码的需要,您可能需要考虑使用某种基于令牌的身份验证。