node.js - 在生产 PostgreSQL 连接中将 rejectUnauthorized 设置为 false 可以吗?

标签 node.js postgresql ssl heroku-postgres pg-promise

我们最近搬到了 Heroku,在尝试将我们的应用程序连接到数据库时,它一直拒绝我们的查询,并显示消息“自签名证书”。传入 rejectUnauthorized 解决了这个问题,但现在我想知道,我们应该在生产中这样做吗?如果不是,我们连接到 Heroku PG 数据库的合适方法是什么?

const pgp = require('pg-promise')(/*initOptions*/);
const {ConnectionString} = require('connection-string');

const cnObj = new ConnectionString(process.env.DATABASE_URL);

const cn = {
  host: cnObj.hostname,
  port: cnObj.port,
  database: cnObj.path?.[0],
  user: cnObj.user,
  password: cnObj.password,
  ssl: {
    rejectUnauthorized: false,
  },
};

const db = pgp(cn);

最佳答案

您所面临的风险是有人介于您和 Heroku 服务器之间并冒充后者。然后他们可以向您出示他们自己的证书并与您协商连接。中间人也可以将挑战从服务器传递给您,并使用您的响应代替您登录到数据库服务器。

所有这些都假设攻击者已经控制了您和 Heroku 服务器之间的网络 Node 之一。

所以我想说,虽然存在残余风险,但我不会为此失眠,除非您正在处理非常敏感的数据,在这种情况下,偏执狂是一种美德。

关于node.js - 在生产 PostgreSQL 连接中将 rejectUnauthorized 设置为 false 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63863591/

相关文章:

mysql - 将 mysql 与 google 的 bigquery 链接

asp.net - 如何在 linux/windows 上运行的服务器上进行 postgres 备份

java - PostgreSQL 使用 JPA 和 Hibernate 抛出 "column is of type jsonb but expression is of type bytea"

asp.net-mvc - 当所有看起来都通过 SSL 时混合内容消息?

ssl - 在 Tomcat 7 应用程序上将 http 重定向到 https

java - HttpClient+SSL 可信证书

node.js - connect.utils.parseSignedCookies 已弃用,使用 Express 和 Redis 存储 cookie

node.js - Sequelize-Postgres错误: values. map is not a function

javascript - 在 PostgreSQL 中存储 Javascript 数字的最佳方式是什么

sql - 如何使用 JOIN 将列从一个表复制到另一个表