PostgreSQL中密码的数据类型是什么?


69

,有这样的数据类型的密码被固定在你的数据库里面做加密。

我现在用它varchar来存储密码。我有个想法,我应该以某种方式对密码应用SHA-512函数,并将该数据放在某个地方,以便删除纯文本密码。

但是,Perl中的数据类型告诉我,PostgreSQL中有比varchar更好的方法。

PostgreSQL中密码的数据类型是什么?

Answers:


70

杰夫有一篇很好的文章,标题为“您可能存储错误的密码”。本文讨论了在数据库中存储密码的各种方法,以及您可能会遇到的一些常见陷阱。特别是,它讨论了哈希算法,彩虹表的使用以及“盐”的使用,以减少密码文件遭到破坏的风险。

varchar数据类型的使用非常适合存储正确散列的密码。例如,这是我来自生产数据库的实际帐户记录的一部分:

=>从其中email ='greg@hewgill.com'的帐户中选择account_id,电子邮件,盐,密码。
 account_id | 电邮| 盐| 密码                 
------------ + ------------------ + ------------------ + ------------------------------------------
          1 | greg@hewgill.com | GFR9uT4N4Tzl3vnK | 2c2bf00079a6d49a8f7fb17cefb52fdb41a4b043
(1列)

在这种情况下,passhash盐的SHA-1的十六进制表示形式是与我的密码连接在一起的。


帐户表中的每个帐户的盐值应该不同吗?
莱奥波德·赫兹(LéoLéopoldHertz),2009年

3
是的,需要使用其他盐。否则,它就像根本没有盐一样。Jeff在他的文章中对此进行了介绍。
格雷格·休吉尔

您所指的很棒的文章。作者建议使用比您使用的盐长得多的盐,使用短得多的盐的理由是什么?
mvexel 2011年

10
使用GPU破解密码已使该答案过时了。SHA-1不是合适的密码哈希算法。
埃文·克罗斯克

9
建议:不要使用多余的盐柱。将其保存为这样的密码:{salt} {hash}
Dieter

8

安装“ chkpass模块”

该模块实现了chkpass数据类型,该数据类型旨在用于存储加密的密码。您需要安装postgresql contrib软件包并运行CREATE EXTENSION命令进行安装。

在Ubuntu 12.04中,它将如下所示:

sudo apt-get install postgresql-contrib

重新启动PostgreSQL服务器:

sudo /etc/init.d/postgresql restart

所有可用的扩展名都在:

/opt/PostgreSQL/9.5/share/postgresql/extension/

现在,您可以运行CREATE EXTENSION命令。

例:

CREATE EXTENSION chkpass;

CREATE TABLE accounts (username varchar(100), password chkpass);
INSERT INTO accounts(username, "password") VALUES ('user1', 'pass1');
INSERT INTO accounts(username, "password") VALUES ('user2', 'pass2');

select * from accounts where password='pass2';

退货

username | password
---------------------------
"user2"  | ":Sy8pO3795PW/k"

与grep的答案“盐和哈希”相比,此软件包有什么好处?
莱奥波尔德·赫兹(LéoLéopoldHertz)2016年

1
chkpass使用crypt算法。散列算法是一种在2012年发生过几次密码泄漏的算法。使用chkpass的优点是易于进行文本比较。
Nery Jr

管理员可以看到查看真实密码的功能吗?我认为他们不应该。什么是crypt算法?
莱奥列奥波尔德赫兹준 영

如果这是基于算法的,那么任何人都可以生成彩虹表?
凯文·沃特森

我收到此异常错误:无法打开扩展控制文件“ /usr/share/postgresql/12/extension/chkpass.control”:没有这样的文件或目录
Shiv Krishna Jaiswal

5

Postgres 9.4+版可以使用pgcrypto扩展程序以更智能,更安全的方式完成此任务,具体说明如下:http : //www.meetspaceapp.com/2016/04/12/passwords-postgresql-pgcrypto.html


5
您能否更清楚地说明扩展的优点和缺点。现在,您的答案主要是“仅链接”答案。
莱奥波德·赫兹(LéoLéopoldHertz),2017年

1
在2019年,这将导致最正确的答案。谢谢!
Xunnamius

2
请注意,如果您考虑将Postgres作为服务,并从某些云提供商处使用它,则可能无法控制在此处安装pgcrypto扩展。当心陷阱。
Tyagi Akhilesh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.