3

Perl と Apache でクロスサイト リクエスト フォージェリ (CSRF)を防ぐことができる、透過的なライブラリや簡単なものはありますか? フォームのトークンを生成してサーバー側で検証するにはどうすればよいですか?

4

2 に答える 2

9

CGI::Application::Plugin::ProtectCSRFの機能を見てください。このモジュールは、CGI::Application フレームワーク用です。

他のフレームワーク用にモジュールを変更するのはそれほど難しくありません。基本的に、ユーザー フォームは生成されたトークンが追加された非表示の HTML フィールドを取得し、セッション オブジェクトは同じトークンを取得します。フォームが送信されると、フォームから送信されたトークンがセッション オブジェクト (サーバー上) のトークンと比較されます。一致しない場合は、CSRF が発生している可能性があります。

Catalyst プラグインもあります: Catalyst::Controller::RequestToken

これらのモジュールは属性ハンドラーを使用するため、既存のアプリに必要な変更はほとんどありません。

于 2009-12-01T22:58:49.300 に答える
0

サーバー側からの「クロスサイトリクエストフォージェリ」から保護するには、次のことを行うのが最善です。

  1. HTMLエスケープを使用します。Template Toolkitのようなテンプレートシステムを使用する場合は、そのエスケープ機能を使用する必要があります。CGI.pmを使用する場合、これを行うための「escapeHTML」サブがあります。
  2. セッションCookieの有効期間を比較的短い期間に制限します。CGI :: Sessionの場合、$ session-> expire($ time)で実行できます。
  3. 脆弱なページを出力するときはリファラーを確認してください。
  4. データを変更するためにGETリクエストを使用/受け入れないでください。

これを行うことはフレームワーク固有ですが単純です。

于 2009-05-08T23:14:28.057 に答える