2011-07-13 19 views
3

誰でもデータベースのpostgresに関して私を助けることができますか?私は例以下などのデータのパスワードを非表示にする必要がありcreated.Iたテーブル内の値を非表示にする必要があり :データベース内の値を非表示にする方法PostgreSQL

ユーザ名・パスワードを ANA 123

私はパスワードをしたいが* のように表示することができ、誰助けて?前もって感謝します。

+1

テーブルへのアクセスを制限することはできますが、ユーザーがテーブルを照会できる場合は、そのテーブルの内容を見ることができます。 –

+1

パスワードをテーブルに書き込むプログラムの場合は、パスワードを暗号化してテーブルに書き込むことができます。したがって、テーブルを読み取るクエリが手動で送信されると、暗号化されたパスワードだけが表示されます。 – vpit3833

+0

ログイン時にパスワードを確認するにはどうすればよいですか?常にMD5を使用する方が良いです。 – jordani

答えて

2

拡張DES暗号化とPGP暗号化などのいくつかのオプションについては、pgcryptoモジュールをご覧ください。私はMD5を使用することをお勧めしません。なぜなら、(IMHO)それは今日(特に塩がない)簡単に壊れやすいからです。より良い選択はSHA-512(またはSHA-3候補の一部:BLAKE,Grøstlなど)です。

hashcatのような(おそらくGPUアクセラレーションされた)ツールに対して非表示の方法をチェックすることをお勧めします。それは本当に貴重なデータを保存するかによって異なります。

1

パスワード列以外のすべての列(またはすべての列、次に '*'のパスワード)を使用して、そのような隠蔽を行う標準的な方法の1つはビューを作成することです。 dbユーザーの場合、アプリケーションは接続に使用し、ビューへの読取りアクセスを許可しますが、ソース表の読取りアクセスは削除します。そうすれば、アプリケーションがフィールドにアクセスする機会はありません。以下のような

何か:

CREATE VIEW visible_users AS 
    SELECT username, '***' as password 
    FROM users; 

その後の権限が適切に管理されていることを確認してください。

REVOKE ALL ON users FOR app_user; 

あなたはおそらく平文でデータベースにパスワードを保存してはならない、と述べた - それはです重大な潜在的なセキュリティ上の問題。

+0

お返事ありがとうございます。私はパスワードとしてmd5を使用していました。しかし、jsp username:anaとpassword:123でプロセスログインを行うと、パスワードを読み取ることができません。md5にパスワードを設定しないと、スムーズに実行できません。別の構文に変更することにしました。それでも見つからない。どうですか? – ana

+1

私はあなたの質問に従うか分からない。ハッシュ化されたパスワード記憶域を使用する場合、パスワードをデータベースに挿入するとハッシュされます。次に、ログインを確認するときに、同じ方法でユーザー入力をハッシュし、ハッシュ値を比較します。決して平文のパスワードを守っているわけではありません。そのため、出かける危険はありません。 – jmelesky

1

パスワードのMD5を保存し、それを入力されたパスワードのMD5と比較するのが普通です。それはかなり安全です(しかし、ブルートフォースは十分な時間が与えられればそれを打ち破ることができます)。

関連する問題