gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:13:47 25 4
gpt4 key购买 nike

我有以下问题。我使用以下语句创建了一个 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/

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