2011-01-14 18 views
0

私は誰もが何を考えているのが好奇心です。2つのデータベースまたは1つにユーザー名とパスワードを保存する方が良いですか?

アイデアは一方向暗号化されたユーザー名を1つの接続でセキュリティ保護された1つのデータベースに格納し、次に対応する一方向暗号化パスワードを別のデータベースに別のデータベースで格納することです。彼らは別々のサーバーになる可能性がありますが、私はそれが必要ではないと思います。その結果、攻撃者が他のデータベースなしで1つのデータベースにアクセスできれば、情報は役に立たなくなるでしょう。 この情報を使用するアプリケーションは、一致するハッシュされたユーザーの資格情報のみをチェックし、インデックス列が一致しているかどうかを確認します。

パフォーマンス上の問題があるかもしれませんが、最小限に抑えることができると私は考えています。私にとって、これはユーザー情報が最も安全なものになるでしょう。

+1

ユーザー名をハッシュしますか? – Thomas

+1

テントには安全なドアを置くことはありません。セキュリティを確保しようとしているシステムに適していることを確認してください。 – time4tea

+0

妥協する方法によって、あるデータベースを妥協させることは許されますが、他のデータベースは妥協することはできません。答えが「あまり多くない」の場合、セキュリティは得られません。また、認証を処理するだけの非常に安全なデータベース(例えば、単純なプロトコルでシリアルリンク上でのみ接続される)を持つことを検討することもできます。 – derobert

答えて

1

パスワードを別の制限付きデータベースに保存したいと思います。理由を追加するには、ユーザー、グループ、その他の設定のリストを公開することができますが、暗号化されていてもパスワードは保護されている必要があります。たとえば、UNIXのようなシステムは通常、ユーザー固有の情報(ユーザーID、グループID、シェルなど)を保管します。公的に利用可能な場所で。しかし、パスワードのMD5ハッシュはすべての人に隠されています。以前は利用可能でしたが、MD5のデコードはブルートフォースを使用することで可能になりました。

+0

MD5ハッシュをもう使用しないでくださいbcryptなどのメソッド)。 [レインボーテーブルで十分に:安全なパスワードスキームについて知っておくべきこと](http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you -need-to-know-about-s.html)。別の(透過的に暗号化された/制限された)データベース(おそらくは同じサーバー上で)を使用してフォールトすることはできませんが(+1を与えました)、次のことは一般的なパスワードの処理の要約です。誰かのパスワードシステムを使用してください。自分でビルドしないでください。 –

0

私の限られた知識から...ユーザー名とパスワードの両方をハッシュした後に何かが推測されるのは、残虐で、あなたはそこからかなり良いです。

0

面白い概念ですが、私が扱っているシステムはいずれも単一のスキーマと同じテーブルでも両方を処理しましたが、本当にそれは可能ですが、言及したように必要ではありません。

関連する問題