1

そう、

パスワードを格納する mysql テーブルがありますが、これらのパスワードはハッシュできません。後でプレーン テキストに復元する必要があるためです。

私は、ajax/php を介してこれらのパスワードを mysql データベースから取得し、それを使用して認証する別のサーバーに送信する JavaScript を持っています。そのため、送信時にそれらをプレーンテキストにする必要があります。

base64 やその他の暗号化アルゴリズムがあることは知っていますが、それは安全ではありません。

私が見つけた最善の解決策は OpenSSL ですが、正しい道を進んでいるかどうかはわかりません。私ですか?

4

3 に答える 3

3

OpenSSL は、探し始めるのに適した場所です。プレーン テキストのパスワードを暗号化するために使用できる非常に多くの安全な暗号化アルゴリズムをサポートしています。AES-256 または Twofish は、検討を開始するのに適したアルゴリズムです。3DES は、今日の標準にも十分対応できると考えられています。

セキュリティを強化するには、各ユーザーのパスワードを異なるキーで暗号化する必要があります。つまり、各ユーザーには一意の暗号化キーがあり、すべてのパスワードに 1 つのキーを使用するわけではありません。これは、ユーザーがサイトで使用するユーザーのパスワードのハッシュである可能性がありますが、多くの場合、ユーザーのパスワードは強力ではなく、サイトやサービスのパスワードを忘れると、暗号化キーも失われます。

最大限のセキュリティを確保するには、暗号化キーをどこにも保存しないでください。ユーザーがパスワードを使用してログインすると、パスワードに基づいてメモリ内に暗号化キーを生成できます。理想的には、パスワードの単なるハッシュではなく、何らかの変換アルゴリズムを介して適用されるパスワードです。

それができない場合は、暗号化されたユーザー パスワードを格納する物理サーバーとは別の物理サーバーに暗号化キーを格納する必要があります。暗号化キーを格納するサーバーには、アプリケーションだけがキーにアクセスできるように、データベースへのアクセスが非常に制御された、多くのセキュリティおよびアクセス制御機能が配置されている必要があります。

それに加えて、サードパーティのサービスで使用するために暗号化された形式のパスワードを保存できることをプライバシー ポリシーで開示する必要があります。

それが役立つことを願っています。 OWASPには、これから行うことに関連するその他の役立つ情報が含まれている場合があります。

于 2012-07-24T22:03:39.690 に答える
2

すべての回答に感謝します。ここで説明されている php 暗号化方法を使用します: https://stackoverflow.com/a/6639179/1415262

いくつかのopensslを試してください。

他のすべての回答については、いくつかの問題があり、その理由を説明する時間がありません。

PS .: まだ投票できませんが、@drew010 と @fabio に感謝します :)

于 2012-07-24T22:50:06.880 に答える
0

パスワードをプレーンテキストで保存せず、あるサーバーから別のサーバーに渡されるある種の 1 回限りの使用キーを生成することを強くお勧めします。

したがって、サーバー 1 には特定のユーザーにリンクされた一意のキーがあり、このキーはサーバー 2 にもあり、それが渡されたキーです。

于 2012-07-24T21:43:45.423 に答える