私は中規模のPHPCodeIgniterWebサイトで基本的なパスワードセキュリティの作成に取り組んでいます。データベースに保存されているパスワードの暗号化を開始する必要があります。ユーザーパスワードは、CSVインポートや個別のサインアップアプローチなど、さまざまな方法を使用して挿入できます。
したがって、パスワードを暗号化する必要があるMVCシステムの正しいレベルを知りたいだけですか?
私は中規模のPHPCodeIgniterWebサイトで基本的なパスワードセキュリティの作成に取り組んでいます。データベースに保存されているパスワードの暗号化を開始する必要があります。ユーザーパスワードは、CSVインポートや個別のサインアップアプローチなど、さまざまな方法を使用して挿入できます。
したがって、パスワードを暗号化する必要があるMVCシステムの正しいレベルを知りたいだけですか?
この機能を実行する必要があるのは、新しいユーザーを追加するとき、または既存のユーザーのパスワードを更新するときだけです。これらの機能は両方とも、ユーザーモデルによって実行される必要があります。たとえば、次のようになります。
$user = new User();
$user->setName('...');
$user->setPassword('...');
$user->save();
また:
$user = User::find('...');
$user->setPassword('...');
$user->save();
この例では、setPassword()メソッドが実際の暗号化を行います。
また、このように考えてください。暗号化されていないパスワードをシステムに取り込むことはできないはずです。したがって、ユーザーモデルをユーザーと対話する唯一の方法にし、与えられたすべてのパスワードを透過的に暗号化するようにします。
それはすべて、パスワードの保存方法によって異なります。
私は通常します:
UserIDまたは実行時に生成された(つまり挿入時に)saltを使用しなかった場合は、パスワードの挿入と暗号化を同時に行うことができます。
編集...
申し訳ありませんが、暗号化の使用を継承しましたが、パスワードの場合は、パスワードをハッシュする必要があります。
簡単な例は次のとおりです。
md5(md5(UserID).md5('Password'))
次に、ユーザーが電子メール/ユーザー名とパスワードを入力するときは、次のようにする必要があります。
select * from User where Username = 'myusername' and Password = md5(concat(md5(UserID), md5('Password')))
パスワードを復号化する代わりに。