2009-07-29 123 views
40

I read暗号化を行うデータ型があるため、データベースにパスワードが確保されています。PostgreSQLのパスワードのデータ型は何ですか?

私は現時点でパスワードを保存するのにvarcharを使用しています。私は何とかSHA-512機能をパスワードに適用してプレーンテキストのパスワードが削除されるようにそのデータをどこかに置くべきだという考えを持っていました。

しかし、Perlのデータ型は、PostgreSQLではvarcharよりも優れた方法があることを示しています。

PostgreSQLのパスワードのデータ型は何ですか?

答えて

42

ジェフには、You're Probably Storing Passwords Incorrectlyというタイトルの良い記事があります。この記事では、データベースにパスワードを格納するさまざまな方法と、実行する可能性のある一般的な落とし穴のいくつかについて説明します。特に、暗号化されたパスワードファイルのリスクを軽減するために、ハッシュアルゴリズム、レインボーテーブル、および「塩」の使用について説明しています。

varcharデータ型を使用すると、適切にハッシュされたパスワードを格納するのに完全に適しています。ここでは、本番データベースからの私の実際のアカウント記録の一部である、例えば:

=> select account_id, email, salt, passhash from account where email = '[email protected]'; 
account_id |  email  |  salt  |     passhash     
------------+------------------+------------------+------------------------------------------ 
      1 | [email protected] | GFR9uT4N4Tzl3vnK | 2c2bf00079a6d49a8f7fb17cefb52fdb41a4b043 
(1 row) 

この場合、passhashは、SHA-1パスワードと連結塩のの16進数表現です。

+0

塩はする必要がありますAccountsテーブルの各アカウントごとに異なりますか? –

+1

はい、別の塩を使用する必要があります。そうでなければ、全く塩と全く同じです。 Jeffは彼の記事でこれを扱います。 –

+0

あなたが参照している素晴らしい記事。著者はあなたが使用している塩よりも長い塩を提案しますが、はるかに短い塩を使用する理由は何ですか? – mvexel

4

このモジュールは、暗号化されたパスワードを格納するために設計されたchkpassデータ型を実装「たchkpassモジュール」をインストールしてください。 postgresql contribパッケージをインストールし、インストールするにはCREATE EXTENSIONコマンドを実行する必要があります。

sudo apt-get install postgresql-contrib 

を再起動し、PostgreSQLサーバ:それはこのように行くだろうUbuntuの12.04で

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" 
+0

grepの答えと比較して、このパッケージの利点はどこですか? –

+1

chkpassは暗号アルゴリズムを使用します。ハッシュは、2012年に漏洩したパスワードのいくつかのケースを持つアルゴリズムです。ソルトは、セキュリティを強化するハッシュの前に増やす組み合わせです。 chkpassを使用する利点は、テキスト比較の容易さです。 –

+0

管理者は本当のパスワードを見ることができますか?私は彼らがしてはならないと思う。暗号アルゴリズムとは何ですか? –

2

Postgresのバージョン9.4+これはpgcryptoの拡張機能を使用して賢くし、より強固な方法で成し遂げることができますで説明したように:http://www.meetspaceapp.com/2016/04/12/passwords-postgresql-pgcrypto.html

+1

延長の利点と欠点をより明確に説明できますか?さて、あなたの答えは主にリンクのみの答えです。 –

関連する問題