この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
WEBサイトの負荷テストに便利なツール JMeter で、CSRFトークンを取得する方法をご紹介します。
CSRFトークン
CSRF対策として、入力フォームにhiddenでトークンを埋め込んでいるサイトは多いと思います。
最近ではフレームワーク側でデフォルトでこの機能が付いている場合もありますね。
このような場合、JMeterでPOST系のテストするためには、どうにかしてこのトークンを取得しなければなりません。
正規表現抽出
まず、CSRFトークンが表示されている画面のサンプラーを追加します。
そしてサイドバー上のそのサンプラーを右クリック
→追加→後処理→正規表現抽出
表示された、正規表現抽出画面で以下のように設定します。
Apply to:● Main sample only
Field to check:● Body
参照名:csrf_token ※後ほど参照する時のキーとなります
正規表現:<input name="token" value="(.*?)" type="hidden" /> ※例です。各サイトに合わせてください
テンプレート:$1$
Parametersに追加
正規表現で取得したトークンをフォームをPOSTするサンプラーのParametersにセットします。
名前:_csrf
値:${csrf_token}
以上です。