フレームワークベースではない既存のPHP/MySQLWebサイトがあります。シンプルなセキュリティモデルがあり、ユーザー名とハッシュ(MD5)パスワードを含むusersテーブルがあります。
私は現在、このサイトの「バージョン2」に取り組んでいます。今回は、DoctrineでSymfonyを使用しています。新しいバージョンは正常に機能しており、ユーザー管理にsfDoctrineGuardプラグインを使用しています。
既存のユーザーを最小限の手間で新しいアプリに移行し、既存のユーザー名とパスワードを保持したいと思います。ただし、私の主な問題は、使用しているパスワードハッシュを変更したいということです。
現在のサイトでは、無塩のMD5ハッシュのパスワードを使用しています*。既存のアルゴリズムを維持しながら(無塩のMD5に独自の「アルゴリズム」関数を提供することにより)ユーザーをSymfony / sfDoctrineGuardに移行する方法はすでに理解していますが、無塩のmd5は明らかに理想的ではありません。
つまり、私の質問は、カスタムのプレーンMD5パスワードハッシュアルゴリズムを使用してsfDoctrineGuardユーザーに正常に移行できるユーザーがたくさんいる場合、それらのユーザーを標準のソルトされたSHA1sfDoctrineGuardアルゴリズムを使用するように変換する方法はありますか? ?
再ハッシュするためのユーザーのプレーンテキストパスワードを取得するのはこのときだけなので、各ユーザーがログインするときにのみ、ユーザーごとにこれを実行できると思います。私がする必要があるのは、「このユーザーはこのパスワードで正常にログインした」ポイントで何かにフックすることだと思います。これにより、ユーザーのアルゴリズム、ソルト、およびパスワードを新しいSHA1システムに設定し、ユーザーを彼らがそれについてさえ知らないデータベース。
少し掘り下げてみましたが、sfDoctrineGuard(具体的にはsfGuardSecurityUserだと思いますか?)ログインシステムを適切な場所でオーバーライドまたはフックする方法がわかりません。まあ、実際のプラグインファイルをハッキングせずにはいられません。これは悪そうです。
そこにいるSymfony/sfDoctrineGuardの専門家は私を正しい方向に向けることができますか?
*そのように私を見ないでください、それは私の最初のウェブサイトでした!そして、少なくとも私はそれらを平文で保存しませんでした...