web-dev-qa-db-ja.com

データベースが侵害され、一部のパスワードが解読された

MMORPGゲームを実行しましたが、今日、あるサーバーから別のサーバーに移動しているときに、Apacheが失敗し、すべてのソースコードとデータベースのバックアップを含むサーバー上のデータの一部が一覧表示されました。ダウンロードした人

それが起こったことに気付いたとき、私はすべてのユーザーにパスワードの変更を強制し、すぐにデータベースのパスワードを変更しました

パスワードはSHA1で暗号化されており、ハッキングされたユーザーにパスワードを尋ねたところ、一部のユーザーがハッキングされた(つまり、パスワードが解読されたと思われる)ことに気付いたため、ほとんどの場合、解読された数値パスワードでした。ハッキングされたアカウントは、ゲームプレイ全体に影響を与えるゲーム内アクションを実行したため、データベース(ハッカーが所有するデータベースでもあります)の最新のバックアップを復元する必要があります。

さて、一度それをします。ユーザーのパスワードは同じままだったので(クラックされたもの)、データベースのバックアップを復元し、ユーザーの安全を確保するにはどうすればよいのでしょうか。

ユーザーごとにランダムなパスワードを生成し、新しいパスワードをメールで送信することを考えたので、ハッカーは持っていない新しいパスワードを取得し、ログイン後にもパスワードを変更する必要があります。それがベストプラクティスでしょうか?誰かもっと良いアイデアがありますか?

1
Sins

ランダムなパスワードを生成してユーザーに送信することは問題ありません。しかし、まだ行っていない場合、最も重要なことは、すべてのユーザーにパスワードが侵害されていることを警告することです。他のWebサイト/アプリで同じものを使用している場合は、絶対にパスワードを変更する必要があります。

2
ero

パスワードリセット機能があると仮定すると(持っていなかったら驚かれることでしょう)、ハッシュを空白にするか、空の/役に立たないものに置き換えます。このように、誰もログインできず、適切なユーザーがパスワードをリセットしてアクセスを回復できます。

SHA-1よりも優れたハッシュ手法の使用を検討する必要があります。単純なパスワードの場合、プレーン(無塩)SHA-1用のレインボーテーブルおよびその他の事前計算されたパスワードリストがあります。少なくとも、ハッシュをソルトする必要があります。できれば、PBKDF2、bcrypt、scryptなどの手法を使用して、将来の攻撃者がハッシュを解読するのをはるかに困難にする方法でハッシュを生成する必要があります。

1
David