7

背景を少し --

Java で動作するゲーム サーバーと、PHP (phpbb) で動作するフォーラムを実行しています。ゲームのパスワードを変更すると、フォーラム アカウントのパスワードが自動的に変更されるように、ゲームとフォーラムのアカウントがリンクされています。2 つのシステムは異なるパスワード ハッシュ アルゴリズムを使用しており、phpbb の組み込み関数を使用してフォーラム側でパスワード ハッシュを更新する必要があります。つまり、(独自のコードを実行するのではなく) PHP スクリプトから呼び出す必要があります。

これを行うために、パスワードを変更する必要があるときはいつでも PHP スクリプトに HTTP リクエストを送信して Java に PHP スクリプトを呼び出させ、フォーラム アカウントのパスワード変更プロセスを完了する PHP スクリプトをトリガーすることにしました。ただし、プレーンテキストのパスワードを HTTP 呼び出しに入れたくありません。ログ ファイルやその他の悪用可能な領域に表示される可能性があるためです。私の現在の考えでは、Java 側がパスワードを変更するときに、新しい平文のパスワードをデータベース テーブルに入れ、HTTP 要求を作成して PHP スクリプトをトリガーし、ハッシュや機密情報が HTTP 要求に入らないようにします。HTTP 呼び出しは、認証のために、変更するアカウントのユーザー名と、共有シークレットの md5 ハッシュとユーザー名のみを渡します。PHPスクリプトが実行されると、

一般的な状況では、プレーンテキストのパスワードがデータベースに存在する時間は、おそらく 1 秒未満で削除されます。理想的には、どこにも保存しないのが理想ですが、フォーラムのパスワード ハッシュがどうなるか予測できない場合に、必要な変更を Java から PHP に伝達する方法が他にわからないので、どうにかして送信する必要があります。ハッシュを行う PHP スクリプトへの平文パスワード。

これを行うためのより良い方法に関するアイデアはありますか、またはプレーンテキストのパスワードを非常に短期間保存することに関するフィードバックはありますか? MySQL ログインは安全であり、他の人やプロジェクトと共有されていないと考えています。

ありがとう!

4

3 に答える 3

3

プレーンテキストのパスワードを保存しないでください。あなたのゲームが人気になると、特に金銭的な側面が含まれる場合 (つまり、world of warcraft、travian などの場合)、ハッカーの絶え間ない攻撃の標的になる可能性があります。この場合、システムを保護しようとしても、誰かがシステムをハッキングして機密データを取得する可能性があると想定する必要があります。このタスクを実行するには、標準の暗号化メカニズムを使用する必要があります (つまり、安全な方法で HTTPS などを介してフォーラム システムにパスワードを送信します)。また、@Joshua Kaiser のコメントを調べることをお勧めします。シングル サインオンがニーズに応える鍵となる可能性があります。ここで車輪を再発明しようとしないでください。たとえば、私は kerberos を使用していますが、Kerberos にはアプリケーション間でチケットを再利用できるチケット メカニズムがあります。

PS - この回答を誤って 2 回投稿し、「投稿を削除」を押してみました - stackoerflow がそれを処理してくれることを願っています。

于 2012-11-21T04:17:44.877 に答える
0

PHP よりも Java で使用しているデータベースに依存します。PHP では、PDO を使用して別のデータベースに接続し、データを操作します。逆暗号化に応じて、1 つの DB をプライマリ パスワード ストレージとして使用し、もう 1 つの DB を救済として使用することもできます。

PHPに(たとえば)テキストパスワードを一時フィールドのJavaデータベースに直接PD​​Oさせます-もちろんユーザーに固有です-次に、PHPにJava関数をトリガーしてその列を読み取り、ハッシュし、正しい列を更新して削除するように指示します一時フィールド。

適切に行えば、脆弱性の時間枠を数ミリ秒に制限できます。

于 2012-11-21T04:09:15.057 に答える
0

暗号化がその方法です。

  • 暗号化された接続: HTTPS の同義語。サーバーがサポートしている場合は、HTTPS を使用してデータを phpbb に渡します。
  • 暗号化されたデータ: パスワードを暗号化して何らかの方法でキーを保存する (非常に安全ではありません) か、非対称暗号化を使用します。安全なチャネルを介してパスワードを送信する方法については、私の質問への回答を参照してください。
于 2012-11-21T09:45:26.030 に答える