私は既存のフレームワークベースのPHP/MySQL Webサイトを持っています。これは、ユーザー名とハッシュ(MD5)パスワードを持つユーザーテーブルを持つシンプルなセキュリティモデルを備えています。既存のユーザとパスワードを新しいSymfony/sfDoctrineGuardユーザシステムに移行する
私は現在このサイトの "バージョン2"に取り組んでいます。今回は、symfonyをDoctrineと併用しています。新しいバージョンは正常に動作しています。ユーザー管理のためにsfDoctrineGuardプラグインを使用しています。
私は、既存のユーザーを既存のユーザー名とパスワードを維持しながら、最小限の労力で新しいアプリケーションに移行したいと考えています。私の主な問題は、私が使っているパスワードハッシュを変更したいということです。
現在のサイトでは、パスワードが無制限のMD5ハッシュを使用しています。*です。私はすでに既存のアルゴリズムを維持しながら(無塩MD5のために私自身の「アルゴリズム」機能を提供することによって)ユーザーをSymfony/sfDoctrineGuardに移行する方法を考え出しました。しかし、無制限のmd5は明らかに理想的ではありません。
私のカスタムPlain-MD5パスワードハッシュアルゴリズムを使ってsfDoctrineGuardユーザーに正常に移行できるユーザーがたくさんいることから、これらのユーザーを変換して標準を使用できるようにする方法はありますか? SHA1 sfDoctrineGuardアルゴリズムを塩漬けしましたか?
私は、各ユーザーがログインするときにこのユーザーごとに行うことができます。これは、再ハッシュのためにユーザーのプレーンテキストパスワードを取得する唯一の方法だからです。私がする必要があることは、 "このユーザーはこのパスワードで正常にログインしました"という点に何かを突き刺すことだと思うので、ユーザーのアルゴリズム、塩、パスワードを新しいSHA1システムに設定して、ユーザーをデータベースがなくてもそれについて知ることさえできます。
私はちょっと掘り下げてしまったし、sfDoctrineGuard(具体的にはsfGuardSecurityUser、私は思う?)のログインシステムを無効にする方法や正しい方法を見つけることができない。さて、実際のプラグインファイルをハッキングすることなく、悪いように見えます。
Symfony/sfDoctrineGuardの専門家が私に正しい方向を教えてもらえますか?
*私のように見ないでください、それは私の最初のウェブサイトでした!そして、少なくとも私はそれらを平文で保存しませんでした...
ああ!それは私が必要とした単なる手掛かりかもしれません。私はすでに自分のmyUserクラスに独自のバージョンのcheckPasswordを実装しようとしましたが、それは決して呼び出されませんでした(奇妙なことに、sfGuardSecurityUserのcheckPassword()は呼び出されないので、それは実際にチェックを行うPluginsfGuardUserだ。あなたが言及したディレクトリには、オーバーライド可能なバージョンがあることが分かっている。私はそれを見つけられなかった。私は自分のコードをそこに置くことができるはずだ。ありがとう! –
ありがとう、@kuba。私はアルゴリズムの間でパスワードの移行を成功させることに成功しました。別の答えとして私の正確な解決策を追加しました。誰かが同様の問題に直面するのを助ける場合に備えて。 –