2

このトピックに関するいくつかの回答をここで読みましたが、セッションを使用する方がCookieのみを使用するよりも安全であると人々は言いますが、それがどのように真実であるかはわかりません.

セッションを使用していて、クライアントのコンピューターにはセッション ID のみが保存されているとします。ハッカーがクライアントのコンピュータにアクセスしてセッション ID Cookie を盗んだ場合、実質的に私のサイトのクライアントのアカウントにアクセスできますよね?

ローカル Cookie のみを使用していて、クライアント パスワードのハッシュ化された部分と、サーバーだけが知っているソルトを組み合わせて保存している場合、ハッカーは自分の PC から Cookie を盗んで自分のアカウントにアクセスすることができます。

結局、2 つの方法に違いはありませんよね?または、何か不足していますか?

4

3 に答える 3

3

その通りです。ハッカーがあなたのコンピューターへのフル アクセスを取得した場合、サーバー側でセッションが無効になるまで、あなたはいずれにしても窮地に立たされます。

セッションの Cookie のみに依存している場合は、セッション ID を使用するか、ユーザーの資格情報のハッシュとそのユーザーに固有のソルトを使用するかは問題ではありません。サーバーのソルトを調整して Cookie の値を無効にできる限り、これらは同等です。多くの場合、2 つのソルトを適用します。1 つはユーザーごとに定義され、もう 1 つはすべてのユーザーに適用されます。そうすれば、必要に応じてすべてのユーザーのすべてのセッションを無効にすることも、選択したユーザーのみを無効にすることもできます。

ただし、セッションに Cookie を使用しない十分な理由があります。それは、クロスサイト リクエスト フォージェリ (XSRF) から保護するためです。たとえば、攻撃者の Web サイトにアクセスすると、銀行の Web サイトのページが呼び出され、口座から送金されます。銀行の Web サイトがセッションに Cookie を使用している場合、ブラウザは自動的にセッション Cookie をサイトに渡すため、正常にログインできます。

これを回避する方法は、Cookie ではなくリクエストのペイロードでセッション ID を渡すことです。サーバー側では、Cookie ではなく、ペイロード内のセッション トークンのみを確認してセッションを決定します。

于 2012-10-06T09:09:24.370 に答える
1

質問に答えるだけで、クライアントに保存されているデータ(セッションID)がハッカーによって自動的に期限切れになるまでの期間だけ使用できるという意味で、セッションはより安全です。ただし、ログイン情報の一部を(Cookieとして)クライアント側に保持する場合、ユーザーが変更しない限り、それらは有効になります。リクエストごとにセッションIDを再生成して、セッションIDの寿命をできるだけ短くすることもできます。

[編集]

クライアントに保存されている情報を呼び出しましょうThe Key。セッションIDまたはハッシュ化されたログイン情報にすることができます。このキーを使用すると、ユーザーは自分の要求を認証できます。これで、他の誰かが盗んだ場合、その人The Keyはユーザーができることなら何でもできます。詐欺師はThe Key、それを使用するために復号化する必要はありません。コピーできる限り、復号化できます。詐欺師を止める唯一の方法は、を無効にすることThe Keyです。したがって、コピーできる限り、キーが何であるかは問題ではありません。重要なのは、いつ、どのようにそれを無効にするかです。

于 2012-10-06T09:16:27.017 に答える
1

あなたが見逃しているのは、team playCookie、データベース、およびセッションにある必要があるという点です。

かなりのセキュリティを確保するには、次の手順を実行します。

  1. ユーザーが「Remember Me」をオンにしてログインに成功すると、標準のセッション管理 Cookie に加えてログイン Cookie が発行されます。

  2. ログイン Cookie には、適切な大きさのスペースからのユーザーのユーザー名と乱数 (以降「トークン」) が含まれます。ユーザー名とトークンは、データベース テーブルにペアとして格納されます。

  3. ログインしていないユーザーがサイトにアクセスしてログイン Cookie を提示すると、ユーザー名とトークンがデータベースで検索されます。

    • ペアが存在する場合、ユーザーは認証済みと見なされます。使用されたトークンはデータベースから削除されます。新しいトークンが生成され、ユーザー名とともにデータベースに保存され、新しいログイン Cookie を介してユーザーに発行されます。
    • ペアが存在しない場合、ログイン Cookie は無視されます。
  4. このメカニズムによってのみ認証されたユーザーは、パスワードの変更、個人を特定する情報の表示、またはお金の使用など、特定の保護された情報または機能へのアクセスを許可されません。これらの操作を実行するには、ユーザーは最初に通常のユーザー名/パスワード ログイン フォームを正常に送信する必要があります。

  5. このアプローチにより、ユーザーは異なるブラウザーまたはコンピューターから複数の記憶されたログインを持つことができるため、ユーザーが 1 回の操作で記憶されたすべてのログインを消去するメカニズムが提供されます。

これは、Charles Miller の記事「Persistent Login Cookie Best Practice」に由来します。

于 2012-10-06T09:07:34.870 に答える