NODE_TLS_REJECT_UNAUTHORIZED Heroku应用程序使整个应用程序不安全



我在 Heroku 上有一个使用付费测功机的应用程序,因此使用他们的 ACM 自动证书管理

这应确保客户端和应用之间的所有流量都已加密。

但是,我的应用会标注到单独的专用 API。我正在等待一个单独的自签名证书,以便能够连接到此 API(因此这应该全部与 Heroku 证书分开(。作为临时解决方法..与此 API 的所有连接当前都与

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

我已经阅读了有关此内容的危险以及如何使所有节点未加密的信息。我的问题是,当客户端连接到 Heroku 实例以获取不涉及 API 标注的应用程序的其他部分时,应用程序是否仍然安全。还是设置该 env var 真的会使整个应用程序不安全,无论 Heroku 证书如何?

谢谢!

如果我理解正确,您同时具有传入和传出连接,并且您与 API 的出站连接正在使用NODE_TLS_REJECT_UNAUTHORIZED.

Clients --in--> Your Application --out--> API

您的应用程序入站客户端连接仍将是绿色且安全的,但您与 API 的出站连接仍然容易受到攻击。

就像链条一样,它的强度取决于它最薄弱的环节。 因此,如果有人攻击您与 API 的出站连接,他们可以接收所有数据。

您有两种方法可以解决此问题:

  1. 获取 API 的"真实"证书。
  2. "预授权"自签名 API 证书。

您可以下载自签名证书的公钥并将其存储在 NodeJS 应用程序中。然后,在您的请求中,只需添加:

ca: [fs.readFileSync([certificate path], {encoding: 'utf-8'})]

此解决方案允许您指定所需的 CA 证书。确保证书的公用名与您在请求中调用的地址相同(在主机中指定(:

var req = https.request({ 
host: '192.168.1.1', 
port: 443,
path: '/',
ca: [fs.readFileSync([certificate path], {encoding: 'utf-8'})],
method: 'GET',
rejectUnauthorized: true,
requestCert: true,
agent: false
},

这种方法比盲目设置"接受所有未知的人"要安全得多。 这种方式是在说"约翰没有认证,但我认识约翰,那就是约翰。只要接受约翰。

相关内容

  • 没有找到相关文章

最新更新