セッションは、クッキーよりもはるかに安全です。しかし、セッションを盗むことはまだ可能であり、そのため、ハッカーはそのセッションにあるものすべてに完全にアクセスできます。これを避けるためのいくつかの方法は、IPチェック(かなりうまくいくが、非常に低いので、それ自身では信頼できない)とノンスを使うことです。一般的にノンスでは、ページごとに「トークン」があるので、各ページは、最後のページのノンスと、それが保存したものと一致するかどうかをチェックします。
いずれのセキュリティチェックでも、使い勝手が低下します。 IPチェックを行い、そのユーザーが固定IPを保持していないイントラネットのファイアウォール(またはこれを引き起こす他の状況)の後ろにいる場合、IPを失うたびに再認証する必要があります。ノンスで、あなたはいつも楽しい "クリックするとこのページが壊れる"という状況が発生します。
しかし、クッキーを使用すると、ハッカーは簡単なXSS技術を使用するだけでセッションを盗むことができます。ユーザーのセッションIDをCookieとして保存すると、これも脆弱です。したがって、サーバーレベルのハッキングを行うことができる人にはセッションが忍耐強くても(サーバーが安全であれば、より洗練された方法と通常はいくらかの特権が必要になります)、さらに何らかのレベルの検証が必要になります各スクリプト要求時にクッキーとAJAXを一緒に使用するべきではありません。これは、クッキーが盗まれた場合、町に行くのが簡単になります。たとえば、ページでnonceが使用されていてもページが再ロードされない場合、スクリプトは一致するものだけをチェックしている可能性があります。そして、クッキーが認証方法を保持しているなら、今度は盗まれたクッキーとAJAXの穴を使って町に行くことができます。
PHPはセッションIDをクッキーとして保存することに注意してください。 –
+1ナンスについてもっと詳しく説明できますか?可能なリンク? – Petrogad
nonceのwiki記事はかなり軽いですが、まともなリンクがあります:http://en.wikipedia.org/wiki/Cryptographic_nonce基本的な考え方は、理解しているようにトークンのようですが、一度しか使用できません1回使用)。各ページリクエストは最後のノンスをチェックし、新しいノンスを作成します。だからパスワードに無差別な攻撃をしようとすると、ナンセンスが2ラウンドで一致しないので、私はワンショットを手に入れます。セッションとそのページのナンスを盗んだ場合、リクエストを作成してノンセを更新するまでノンスの試合を捨てるようにリクエストする。それは私の要求と私のノンスを見るので、 – Anthony