4

スタック オーバーフローには、ユーザー パスワードの保存方法に関する多くの質問があります。もちろん、一般的なアドバイスは、パスワードをハッシュしてハッシュを比較することです。

ただし、ユーザーが独自の環境に展開するシュリンクラップ イントラネット アプリケーション (SharePoint など) を構築しているとします。また、HTTP 経由で外部サービスにアクセスするには、ユーザー名とパスワードの組み合わせが必要だとします (API キーまたはフェデレーション セキュリティに依存するソリューションはサポートされていません)。

この場合、呼び出す Web サービスに元のパスワードを渡す必要があるため、パスワードをハッシュすることはできません。暗号化は 2 番目に優れたソリューションですが、暗号化キーには何を使用しますか? 攻撃者がデータベースを侵害した場合、そもそもデータの暗号化に使用されたキーにアクセスできるのでしょうか?

保存されたパスワードの平文バージョンを取得することが本当に必要である場合、最も安全な方法で問題にどのように取り組みますか?

4

3 に答える 3

2

これは実際には本当に興味深い質問です。参加します。

保存するときは暗号化する必要があります。どのように見ても、プレーンテキストで保存するよりはましです。攻撃者がSQLインジェクション広告がデータベースをダンプしているのを見つけたとしましょう。彼はまだ暗号化キーを保持していません。一方、サーバーにアクセスできる場合は、おそらく暗号化キーも見つかります。

少し改善するために、暗号化キーをサーバー構成に保存できます。Apacheを使用していると仮定すると、SetEnvを使用できます。

私の環境では、Apacheの起動時に暗号化キーを入力する必要があります。これは、環境変数として保存されるため、キーはサーバーのどこにも実際には保存されません。

100%安全であるというパスワードを復号化するためにユーザーにキーの入力を要求しない限り、方法はありません。

于 2011-12-30T02:21:11.897 に答える
1

質問が逆になっています。問題は、消費者にパスワードを「表示」させる方法ではありません。問題は、消費者に認証を確認させる方法です。

実装では、消費者がパスワードとユーザー名を提供し、はいまたはいいえのいずれかを取得できる手段を提供します。次に、暗号化された (ハッシュ化されていない) パスワードをデータベースに保存し続けます。

于 2011-12-29T22:27:54.800 に答える