1

CSRF 防止について 1 つ疑問がありました。多くのサイトでは、セッションごとにランダムに生成される「トークン」を使用することで CSRF を防ぐことができると言っています。

今私の疑問は、次のような関数があるとします:

$.post("abcd.php",{'fbuid':userid,'code':'<?php echo  md5($_SESSION['randcode']); ?>'}

現在、この md5 ハッシュは、ソース コードを介して明らかにハッカーに表示されます。ハッカーは、このページを開いてトークンを生成し、ページを開いたままにして、セッションが破棄されないようにし、別のタブまたはその他のものを使用することができます。ハッキングを開始するには、

いいえ ?

または、トークンの私の考えは間違っていますか?

助けてくれてありがとう:D

4

4 に答える 4

4

何をする必要があるかを誤解していると思います。CSRF から保護するには、トークンを作成してそのセッション用に保存する必要があります。次に、すべての送信と AJAX 呼び出しにそのトークンを追加する必要があります。

別の人があなたのウェブサイトのページにあなたを送るには、同じセッションでリクエストにアクセスできる必要があります。HTML を解析してトークンを探すことができるのは事実です。しかし、彼らがあなたの Web サイトで http 呼び出しを要求しようとすると、新しいセッションが作成されます。新しいセッションには、渡されたトークンと一致しない新しいトークンがあります。

次に、結果として Cookie とセッション ID をコピーできるかどうかを尋ねます。これは保護されるものではありません。だれかのコンピュータに座って、すべての Cookie をコピーするだけで、その人としてログインできます。

于 2011-08-23T19:32:40.127 に答える
3

kapep が指摘しているように、入力の検証とクロスサイト フォームの投稿という 2 つの別個の問題を混同しています。とにかく入力を検証する必要があるため、適切な入力検証があれば、悪意のある攻撃者が独自のセッション トークンを使用するケースは既に処理されています。CSRF 保護は、データを保護するためのものではなく、単に、独自のアプリケーションからのフォームのみがそのアプリケーションにデータをポストできるようにするためのものです。CSRF 保護は、他の人が自分のサイトに投稿したフォームからアプリにデータを直接投稿できないようにするだけです。

注意すべき特定のポイントの 1 つは、トークンはページで実行されているすべての JavaScript に表示されるため、クロスサイト スクリプティング (XSS) の脆弱性があるとすぐに、CSRF 保護が無効になることです。

クロスサイト スクリプティング防止チート シートを参照してください。

于 2011-08-24T15:25:31.073 に答える
1

リクエストごとのトークンを使用する必要があります。

  1. トークンを生成し、セッションに保存します。
  2. トークンをクライアントに渡します。
  3. アクションを実行します。
  4. トークンを破棄します。

トークンはより安全で、複数回使用することはできません。

于 2011-08-23T19:31:01.330 に答える
0

盗まれたトークンを、トークンの送信先ではなく、他の誰かが使用するトークンと定義します。誰かにトークンを送ったとしても、その人は自分からトークンを盗むことはできません。

ユーザーが自分のトークンを使用して悪意のあるスクリプトを実行できることを心配している場合、設計が壊れているようです。受信するようにインデントしていないデータをユーザーが送信するのを防ぐことはできません。データを検証するのはあなたの仕事です。セッション トークンは、同じクライアントによる複数の要求を識別するためのものです。

セキュリティで保護されていない http 経由でそのトークンを送信すると、セキュリティ上の問題が発生する可能性があります。その後、クライアントのネットワークを監視することで簡単に盗まれる可能性があります.

于 2011-08-24T11:37:19.703 に答える