gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:37:19 25 4
gpt4 key购买 nike

我在 Heroku 上有一个使用付费测功机的应用程序,因此使用了他们的 ACM Automated Certificate Management

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

但是,我的应用程序调用了一个单独的私有(private) API。我正在等待一个单独的自签名证书,只是为了能够连接到这个 API(所以这应该与 Heroku 证书分开)。作为一个临时解决方法..所有与此 API 的连接当前都用于

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

我已经阅读了有关此操作的危险以及如何使所有 Node 未加密的信息。我的问题是,当客户端连接到应用程序其他不涉及 API 调用的 Heroku 实例时,应用程序是否仍然安全。或者无论 Heroku 证书如何,设置该 env var 真的会使整个应用程序不安全吗?

谢谢!

最佳答案

如果我对您的理解正确,您有传入和传出连接,并且您与 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
},

这种方法比盲目设置“接受所有陌生人”要安全得多。这种方式是说“John 没有认证,但我认识 John,那是 John。只接受 John。”

关于javascript - NODE_TLS_REJECT_UNAUTHORIZED Heroku 应用程序使整个应用程序不安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62451924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com