0

現在、ユーザーを認証し、認証ユーザー名とパスワードをdbセッションに保存するコードがあります。これは、すべてのリクエストで検証されます。

ユーザーを一度だけ認証し、dbセッションで成功認証を維持するように検証方法を変更することを考えていましたが、ユーザーがセッションユーザーであり、すでに検証されている場合は、ユーザーを再度検証しないでください。

この新しいアプローチはより安全でしょうか?または、セッションに保存されている場合でも、リクエストごとにユーザーを検証する必要がありますか?

4

2 に答える 2

1

これを行う必要があります:

  • ユーザー名と暗号化されたパスワードのテーブルをデータベースに保持します(暗号化=少なくともソルトおよびハッシュ)
  • ユーザーにユーザー名とパスワード(場合によってはクライアント側でハッシュ化されたもの)を送信してもらい、ハッシュを再度確認してもらいます
  • クレデンシャルを一度確認し、セッションに何かを設定して、ユーザーに認証済みのフラグを付けます

パスワードをクリアテキストのままにしないでください。また、セッションテーブルに追加の認証データを保存しないでください。リクエストごとにそれらをチェックしても、実際には、リモートユーザー(つまり彼のCookie)がセッションで初めて正しいユーザー名とパスワードを提供したかどうかをチェックしているだけです...設定しただけで同じ正確な結果を得ることができますセッション内の変数...

于 2013-01-15T13:21:32.940 に答える
0

ユーザーの認証状態をDBに保存するのではなく、Cookieを使用します。暗号化されたUNIX認証のタイムスタンプを格納するあいまいな変数名を使用して、オブザーバーが理解しにくくします。これには、リバーシブルサイファーを使用する場合、セッションの有効期限を確認するために簡単な計算が必要になるという利点があります。

これにより、速度低下の原因となる大量のDBアクセスも削除されます。

@Palantirが述べたように、パスワードは暗号化された方法でデータベースに保存されます。ユーザーがパスワードを入力したら、同じ暗号化を実行し、保存されているバージョンを比較します

于 2013-01-15T13:25:31.123 に答える