CookBook

スクリプト開発でのCSRF対策(formタグ編)

投稿日:

Cross Site Request Forgery(CSRF)とは、閲覧者に不正にHTTPリクエストを送信させ、攻撃者の意図した処理を実行させる攻撃手法です。
このCookBookでは、スクリプト開発でformタグを利用する場合のCSRF対策について紹介します。
CSRF対策用のセキュア・トークンを出力するIMARTタグであるimSecureTokenを用いて実装を行います。

セキュア・トークンの詳細な説明は以下のドキュメントを参照してください。
スクリプト開発向けタグライブラリ / imSecureToken

完成イメージ

  1. with_imSecureToken フォームのSubmitボタンをクリックしてください。
  2. セキュア・トークンがリクエストに含まれているため、正常に遷移が行われ、画面にSuccess!と表示されます。
  3. ツールバーの矢印ボタンをクリックしてください。
  4. without_imSecureToken フォームのSubmitボタンをクリックしてください。
  5. セキュア・トークンがリクエストに含まれていないため、403エラー画面が表示されます。

 

完成サンプル

以下の完成サンプルをダウンロードしてご活用ください。

e builder プロジェクト : im_cookbook_113159_CSRF.zip
imm ファイル : im_cookbook_113159_CSRF-1.0.0.imm

ローカル環境で表示させる場合は、以下のURLにアクセスしてください。
http://localhost:8080/imart/im_cookbook/113159/CSRF
なおベースURLである以下の部分は、環境に合わせて適宜変更してください。
http://localhost:8080/imart

レシピ

  1. フォーム画面を作成してください。
  2. 遷移後の画面を作成してください。
  3. ルーティング設定ファイルを作成してください。
  4. セキュア・トークンフィルタ設定ファイルを作成してください。

1. フォーム画面を作成してください。

e Builder のモジュールプロジェクト内に以下のhtmlファイルを作成してください。
src/main/jssp/src/im_cookbook_113159_CSRF/CSRF.html

今回は比較を目的に、セキュア・トークンを含めるformとセキュア・トークンを含めないformの2つを作成してください。
どちらのformも遷移先は im_cookbook/113159/CSRF2 としてください。

セキュア・トークンを含めるformタグの中には <imart type="imSecureToken" /> を記述してください。
imSecureTokenはhiddenタグを生成し、セキュア・トークンを発行するタグです。
このタグを利用することで、直接URLを入力してのアクセスといったセキュア・トークンを発行する画面を経由しないアクセスは、不正なアクセスと見なして遮断することができます。
遮断された場合、403のエラー画面が表示されます。

imSecureTokenの詳細は以下のドキュメントを参照してください。
スクリプト開発向けタグライブラリ / imSecureToken

2. 遷移後の画面を作成してください。

(1) e Builder のモジュールプロジェクト内に以下のhtmlファイルを作成してください。
src/main/jssp/src/im_cookbook_113159_CSRF/CSRF2.html

この画面は、ページが表示された際に「Succsess!」と表示する画面です。
遷移前のフォーム画面に戻るボタンをツールバーに配置しています。

3. ルーティング設定ファイルを作成してください。

e Builder のモジュールプロジェクト内に以下のxmlファイルを作成してください。
src/main/conf/rooting-jssp-config/im_cookbook_113159_CSRF.xml

「2. 遷移後の画面を作成してください。」で作成した各画面のルーティングを設定しています。

4. セキュア・トークンフィルタ設定ファイルを作成してください。

e Builder のモジュールプロジェクト内に以下のxmlファイルを作成してください。
src/main/conf/token-filtering-target-config/im_cookbook_113159_CSRF.xml

セキュア・トークンフィルタ設定ファイルでURLを設定することで、アクセスされた時にセキュア・トークンを用いたリクエストの正当性の確認が実施されます。
<entry>タグのurl属性に、リクエストの正当性の確認を実施するURLを指定してください。
URLは完全一致となるように指定してください。

セキュア・トークンフィルタ設定ファイルの詳細は以下のドキュメントを参照してください。
設定ファイルリファレンス / セキュア・トークンフィルタ設定

-CookBook
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

IM-LogicDesignerを利用して、IM-Workflowの未処理案件の処理対象者を再展開する

このCookBookでは、IM-LogicDesignerを利用して、IM-Workflowの未処理案件の処理対象者を再展開する方法について紹介しています。 人事異動を重ねることで、未処理案件の中には …

no image

ワークフローの一覧を使い分けるには(スマートフォン版)

このCookbookでは、以前に公開した「ワークフローの一覧を使い分けるには(改訂版)」に関して、お問い合わせいただいた内容を追加してスマートフォン画面でワークフローの一覧の検索条件を付与する方法をご …

no image

imuiTreeでドラッグ&ドロップのバリデーションを実装する方法

このCookBookでは、imuiTree (ツリービュー) のドラッグ&ドロップバリデーションについて紹介しています。 intra-mart Accel Platform では、画面上にツリーを表示 …

スプレッドシートでForma入力チェックユーザプログラムを利用して入力チェックを実行する方法

このCookBookでは、スプレッドシートでForma入力チェックユーザプログラムを利用して入力チェックを実行する方法について紹介しています。 Formaの入力チェックプログラムでは以下の2つのチェッ …

no image

request.log を Kibana で可視化する方法

この CookBook では、request.log を Kibana で可視化する方法について紹介しています。 方法は色々ありますが、この CookBook では Logstash と logsta …

まだデータがありません。

RSSRSSRSSRSS