ホームページ  >  記事  >  バックエンド開発  >  Python でクロスサイト攻撃を防ぐ Tornado の手法の紹介

Python でクロスサイト攻撃を防ぐ Tornado の手法の紹介

不言
不言転載
2018-10-20 15:28:332002ブラウズ

この記事では、Python でクロスサイト攻撃を防ぐ Tornado の手法を紹介します。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

クロスサイト リクエスト フォージェリ (CSRF または XSRF) は、Web サイトの悪意のある使用です。 CSRF を通じて、攻撃者はユーザーの ID を詐称し、ユーザーの知らないうちに悪意のある操作を実行する可能性があります。

1. CSRF 攻撃の原理

次の図は、CSRF の基本原理を示しています。 Site1 は CSRF 脆弱性のある Web サイト、SIte2 は攻撃のある悪意のある Web サイトです。

Python でクロスサイト攻撃を防ぐ Tornado の手法の紹介
上の画像の内容は次のように分析されます:

  • ユーザーは最初に CSRF 脆弱性のある Web サイトである Site1 にアクセスし、正常にログインしました。その後、ユーザーによる Site1 への訪問には Site1 の Cookie が含まれるため、Site1 による有効な操作とみなされます。

  • この時点で、ユーザーは攻撃的な行為が行われているサイトである Site2 を訪問しており、Site2 の戻りページには悪意のある操作のために Site1 にアクセスするためのリンクが含まれていましたが、それは正規のコンテンツに偽装されていました。たとえば、次のハイパーリンクは宝くじ情報のように見えますが、実際には Site1 サイトに出金リクエストを送信することを目的としています

<a>
三百万元抽奖,免费拿
</a>
  • ユーザーがクリックすると、悪意のあるリンク上で、知らないうちにリクエストが Site1 サイトに送信されました。ユーザーは以前に Site1 にログインしており、ログアウトしていないため、Site1 がユーザーのリクエストと付随する Cookie を受信すると、そのリクエストはユーザーによって送信された通常のリクエストであると見なされます。この時点で、悪意のあるサイトの目的は達成されています。

2. Tornado を使用して CSRF 攻撃を防ぐ

CSRF 攻撃を防ぐには、各リクエストにパラメーター値を含める必要があります。トークンの一致するストレージ Cookie 内の対応する値。

Tornado アプリケーションは、Cookie ヘッダーと非表示の HTML フォーム要素を通じてページにトークンを提供できます。このようにして、正規のページのフォームが送信されると、フォームの値と保存された Cookie が含まれます。 2 つが一致する場合、Tornado アプリケーションの承認リクエストは有効です。

Tornado の CSRF 防止機能を有効にするには、2 つの手順が必要です。

[1] tornado.web.Application をインスタンス化するときに xsrf_cookies=True パラメーターを渡します。つまり、

application=tornado.web.Application([
(r'/',MainHandler),
],
cookie_secret='DONT_LEAK_SECRET',
xsrf_cookies=True,
)

または:

settings={
"cookie_secret":"DONT_LEAK_SECRET",
"xsrf_cookies":True
}

application=tornado.web.Application([
(r'/',MainHandler),
],**settings)

Tornado.web.Application が必要な場合初期化パラメータが多すぎる場合は、この例のように設定辞書の形式で名前付きパラメータを渡すことができます。

[2] HTML 式を含む各テンプレート ファイルで、すべてのフォームに xsrf_form_html() 関数タグを追加します。例:


{% module xsrf_form_html() %}

ここの {% module xsrf_form_html() %} は、クロスサイト リクエストを防ぐためにフォームに非表示の要素を追加する役割を果たします。

Tornado の安全な Cookie サポートと XSRF 防止フレームワークは、アプリケーション開発者の負担を大幅に軽減します。これらがなければ、開発者は多くの詳細な防止策を検討する必要があるため、Tornado の組み込みセキュリティ機能も非常に役立ちます。

以上がPython でクロスサイト攻撃を防ぐ Tornado の手法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。