14

私はずっと前にCSRFについて聞いていましたが、ほとんどの場合、次のように聞いています。

CSRF攻撃から保護することは、誰かが(ボットなどを使用して)フォームを自動的に送信しないようにするために重要です。

ええと、それは100%真実ではありませんね。

私は約3年間ウェブスクレイピングを行ってきましたが、リクエストを作成し、フィールドを解析csrftokenmiddlewareして、他のフィールドと一緒にPOSTするのは非常に簡単です。

それで、それは本当に何のためですか?

4

4 に答える 4

18

banking.example.com次のフォームを使用して取引を送信する電子バンキング Web アプリケーションを想像してください。

<form action="/transaction" method="post">
    <input type="text" name="beneficiary"/>
    <input type="text" name="amount"/>
    <input type="submit" value="Pay"/>
</form>

hacker.net攻撃者は、次の Web サイトを設定できるようになりました。

<form action="https://banking.example.com/transaction" method="post" style="visibility:hidden">
    <input type="text" name="beneficiary" value="John Doe, Account No. 34-236326-1"/>
    <input type="text" name="amount" value="1000000"/>
    <input type="submit" value="Pay"/>
</form>
<script>
    document.forms[0].submit();
</script>

次に、攻撃者は被害者をだましてhacker.net. これが機能するのは、被害者のブラウザーが、偽造された POST 要求と共にセッション Cookie を喜んで電子バンキング アプリケーションに送信するためです。フォームが CSRF トークンで保護されていた場合、攻撃者は被害者のブラウザに有効な POST リクエストを送信させることができなかったため、攻撃は不可能でした。

このタイプの攻撃は、クロスサイト リクエスト フォージェリ (CSRF) 攻撃と呼ばれます。

ちなみに、CSRF 攻撃は、電子バンキングやその他の重要な Web アプリケーションにログインしている間は、決して他の Web サイトにアクセスしないよう人々にアドバイスする理由でもあります。

CSRF トークンは、通常の承認されたユーザーによって自動的に送信される Web フォームを保護しません。それを防ぐには、CAPTCHAを使用します。

于 2012-04-20T11:15:17.523 に答える
1

あなたはできません

要求を行うには、csrftokenmiddleware フィールドを解析し、他のフィールドと一緒に POST します。

サーバーが適切に構成されている場合、別のドメインの JS はドメインからデータを取得して使用してリクエストを作成することができない ためです。

CORSについて読んでください。

于 2014-08-12T19:46:59.927 に答える