【发布时间】:2021-02-13 02:41:28
【问题描述】:
PHP Web 服务器的数据库初始化如下: 我想使用 pgcrypto 模块中的 PostgresSQL 的 crypt() 函数加密帐户表中的所有密码。本质上,如果这是一种常规编程语言,那么这段代码:
for password in passwd:
set password = crypt(password, my encryption method)
我将如何在 SQL 上完成此操作?有办法吗?如有必要,我也愿意接受 PHP 解决方案。
This answer 似乎没有办法在密码中引用变量以供进一步使用;更不用说它依赖于不同的列。 This one 要求您知道每个密码的值,实际上是手动完成。
【问题讨论】:
-
如果您要在 PHP 应用程序中使用密码,我建议您考虑使用
password_hash()和password_verify()。 -
在查询中加密一切都很好,但是你必须使用 SSL 进行连接,否则 mitm 只能读取纯文本。这增加了一层设置和维护的复杂性postgresql.org/docs/9.1/ssl-tcp.html 更容易在代码中执行并通过网络发送散列
-
是的,我会做一个 SSL,password_hash() 等看起来也很有用,谢谢。我关于将上面显示的 for 循环转换为 SQL 代码的原始问题仍然存在......或者我可能不得不在 PHP 中完成
-
只需使用
UPDATE account SET passwd = crypt(passwd, my encryption method),您不需要任何类型的循环.. rtm: postgresql.org/docs/9.1/sql-update.html -
在做之前注意 varchar(50),你不希望这些值被截断
标签: php sql postgresql psql