Perl と Apache でクロスサイト リクエスト フォージェリ (CSRF)を防ぐことができる、透過的なライブラリや簡単なものはありますか? フォームのトークンを生成してサーバー側で検証するにはどうすればよいですか?
質問する
3094 次
2 に答える
9
CGI::Application::Plugin::ProtectCSRFの機能を見てください。このモジュールは、CGI::Application フレームワーク用です。
他のフレームワーク用にモジュールを変更するのはそれほど難しくありません。基本的に、ユーザー フォームは生成されたトークンが追加された非表示の HTML フィールドを取得し、セッション オブジェクトは同じトークンを取得します。フォームが送信されると、フォームから送信されたトークンがセッション オブジェクト (サーバー上) のトークンと比較されます。一致しない場合は、CSRF が発生している可能性があります。
Catalyst プラグインもあります: Catalyst::Controller::RequestToken
これらのモジュールは属性ハンドラーを使用するため、既存のアプリに必要な変更はほとんどありません。
于 2009-12-01T22:58:49.300 に答える
0
サーバー側からの「クロスサイトリクエストフォージェリ」から保護するには、次のことを行うのが最善です。
- HTMLエスケープを使用します。Template Toolkitのようなテンプレートシステムを使用する場合は、そのエスケープ機能を使用する必要があります。CGI.pmを使用する場合、これを行うための「escapeHTML」サブがあります。
- セッションCookieの有効期間を比較的短い期間に制限します。CGI :: Sessionの場合、$ session-> expire($ time)で実行できます。
- 脆弱なページを出力するときはリファラーを確認してください。
- データを変更するためにGETリクエストを使用/受け入れないでください。
これを行うことはフレームワーク固有ですが単純です。
于 2009-05-08T23:14:28.057 に答える