node.js - Node JS/PostgreSQL。我可以使用任意/任何密码进行身份验证

标签 node.js postgresql

我有以下问题。我使用以下语句创建了一个 PostgreSQL 用户 app:

CREATE USER app WITH ENCRYPTED PASSWORD 'qwerty';

然后我在我的数据库 bazy 中给了它一些权限。

然后我通过验证为该用户并使用 pg 模块来访问数据库,如下所示:

const { Pool } = require('pg');

(async function() {
    let pool = new Pool({
        user: "app",
        host: 'localhost',
        database: "bazy",
        password: "BS",
        port: 5432
    });
    let client = await pool.connect();
    let { rows } = await client.query("SELECT 'I love you';");
    console.log(rows);
})();

问题是这有效并给出了这个输出:

[ { '?column?': 'I love you' } ]

但这应该行不通,因为用户的密码是qwerty,而不是BS。问题是任何密码在这里都有效。

我做错了什么?

[编辑]

@mike.k 的回答是 100% 有用的。

pg_hba.conf 文件的未注释(几乎)部分,我们可以在 these instructions 之后找到,如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

我们可以在这里看到,我们在此处列出的任何类型的连接中都不需要密码,因为方法 trust 意味着为了连接到这些用户,我们不需要任何密码(它被忽略显然),为了改变我们可以使用方法 passwordmd5scram-sha-256 代替,如 pg_hba.conf 文件中所述:

# Note that "password" sends passwords in clear text; "md5" or
# "scram-sha-256" are preferred since they send encrypted passwords.

老实说,我不知道我应该在哪里更改它。 ¯\_(ツ)_/¯。所以我将所有这些(methods 更改为 password)并且它起作用了 :) 它现在需要密码。

最佳答案

检查您的 pg_hba.conf内容,它可能被配置为不需要本地主机连接的密码。

尝试使用本地 IP 地址,您可能会发现它的行为有所不同。或者尝试从同一网络上的另一个系统连接。

关于node.js - Node JS/PostgreSQL。我可以使用任意/任何密码进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56534815/

相关文章:

javascript - 如何检查 DNSSEC 是否符合 nodejs?

javascript - 带 Backbone 的 SPA 的 Require.js 优化器

node.js - Nodejs + ExpressJS 中的类成员继承

python - 大型查询后 psycopg2 泄漏内存

node.js - Windows 10 中的 npm 安装错误 ( npm install -g angular-cli )

javascript - 如何使用 NeDB 获取数据库中特定记录的 id?

json - Postgresql jsonb_agg 子查询排序

sql - 在有条件的两列内计数

c - 为 PostgreSQL 实现 C 扩展函数 - 我该怎么做? (在 C/PostgreSQL 之间传递数据)

java - 如何在 Powershell 命令中使用 Postgres COPY 命令的 PROGRAM 子句