9

PHPがUnicodeをサポートする方法を学ぶのに休憩をとっている間、私は「RememberMe」Cookieをもう少し安全にするために掘り下げてきました。しかし、私が理解していないことがいくつかあり、私自身の考えのいくつかについて、いくつかの提案や意見が欲しいです。

1)Cookieを使用しない「RememberMe」機能を採用する方法はありますか?認証Cookieの保存には明らかなセキュリティ上の欠陥があるため、不思議です。ほぼすべてにセキュリティリスクがないわけではありません。

2)私は銀行や「機密性の高い」情報を扱っていないので、より「目立つ」領域のパスワードをユーザーに入力するように要求する必要がありますか?とにかく2分後に基本的にログインするように依頼するだけの場合、ログインを覚えておくのは無駄になるようです。

3)認証Cookieを保存するための絶対的な最良の方法は何ですか(「まったくない」以外)?私は現在、Cookieに単一のトークンを設定するようにその領域をコーディングしています(time()、それらのユーザーエージェント、remote_addr、およびsalt --sha256を使用してハッシュされています)。上記のユーザーが戻ってくると、トークンの「セッション」テーブルをチェックし、IPとIPを照合してログインします。トークンが存在するがIPが照合されない場合は、Cookieの設定をサイレントに解除し、次のようにログインするように求めます。彼らが持っていなかった場合。

みなさん、ありがとうございました。

4

1 に答える 1

6
  1. 基本的に、いいえ。クライアント側に何らかのストレージが必要です。Cookie (または HTML 5 クライアント側ストレージなどの同様のもの) がなければ、クライアントが誰であるかを知る方法はありません。

  2. それはあなたが決定しなければならないトレードオフです。新しいパスワードに変更するには、最低限、古いパスワードまたはその他の形式の確認 (電子メール?) が必要です。

  3. すべての通信を暗号化しない限り、Cookie の盗難とその後のなりすましを完全に防ぐことはできません。それが唯一の安全な方法です。確かに、IP、ユーザー エージェントなどを Cookie に関連付けることは役立つかもしれませんが、暗号化に依存する方が簡単で、はるかに安全です。(ここでの点を誤解していました。Cookie の値で重要なのはランダムであるため、生成方法を予測しにくいものに変更する必要があります)

于 2011-01-20T05:02:52.773 に答える