現在、ユーザーを認証し、認証ユーザー名とパスワードをdbセッションに保存するコードがあります。これは、すべてのリクエストで検証されます。
ユーザーを一度だけ認証し、dbセッションで成功認証を維持するように検証方法を変更することを考えていましたが、ユーザーがセッションユーザーであり、すでに検証されている場合は、ユーザーを再度検証しないでください。
この新しいアプローチはより安全でしょうか?または、セッションに保存されている場合でも、リクエストごとにユーザーを検証する必要がありますか?
現在、ユーザーを認証し、認証ユーザー名とパスワードをdbセッションに保存するコードがあります。これは、すべてのリクエストで検証されます。
ユーザーを一度だけ認証し、dbセッションで成功認証を維持するように検証方法を変更することを考えていましたが、ユーザーがセッションユーザーであり、すでに検証されている場合は、ユーザーを再度検証しないでください。
この新しいアプローチはより安全でしょうか?または、セッションに保存されている場合でも、リクエストごとにユーザーを検証する必要がありますか?
これを行う必要があります:
パスワードをクリアテキストのままにしないでください。また、セッションテーブルに追加の認証データを保存しないでください。リクエストごとにそれらをチェックしても、実際には、リモートユーザー(つまり彼のCookie)がセッションで初めて正しいユーザー名とパスワードを提供したかどうかをチェックしているだけです...設定しただけで同じ正確な結果を得ることができますセッション内の変数...
ユーザーの認証状態をDBに保存するのではなく、Cookieを使用します。暗号化されたUNIX認証のタイムスタンプを格納するあいまいな変数名を使用して、オブザーバーが理解しにくくします。これには、リバーシブルサイファーを使用する場合、セッションの有効期限を確認するために簡単な計算が必要になるという利点があります。
これにより、速度低下の原因となる大量のDBアクセスも削除されます。
@Palantirが述べたように、パスワードは暗号化された方法でデータベースに保存されます。ユーザーがパスワードを入力したら、同じ暗号化を実行し、保存されているバージョンを比較します