【オンラインRPG】転生したらビヨンドのインターンだった件

【オンラインRPG】転生したらビヨンドのインターンだった件

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【圧倒的 低コスト】Oracle Cloud 構築・運用保守・監視サービス

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【WordPress専用】高速 クラウド / サーバー『WebSpeed』

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【SNSアプリ開発】LINE カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【ECアプリ開発】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【音声アプリ開発】Twilio カスタムアプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【取材記事】サーバーサイド・バックエンドエンジニアを募集中

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【JMeter】CSRFトークンの取得とPOSTリクエスト

こんにちは!システム開発部の福井です!

この度、JMeter を使用したシナリオ作成で、CSRF保護されたページからのPOSTリクエストを行うにあたり、何度か403エラーで弾かれてしまったため、その解決方法についてご紹介させていただきます!

本記事では、主に
・CSRFトークンの取得
・取得したトークンを使用したPOSTリクエスト
の2点についてご紹介させていただきます!

※ちなみに、個人的な備忘録も兼ねて、覚えておきたい JMeter の設定をブログ末尾に記載いたしました。これから JMeter を使われる方は最後までお読みいただけますと幸いです。

CSRFトークンの取得

では早速、CSRFトークンの取得方法からご説明いたします。
CSRFトークンを取得するには「正規表現抽出」機能を使用します。

■ 「正規表現抽出」機能の追加

正規表現抽出の追加方法ですが、CSRFトークンを発行している画面表示のHTTPリクエストのサンプラーに対して、
『追加』→『後処理』→『正規表現抽出』の設定を行う事で追加する事ができます。
※例えば、ログイン処理のPOSTリクエストがあり、そのリクエストパラメータでCSRFトークンが必要な場合、事前の「ログイン画面表示」のGETリクエストに対して、正規表現抽出を追加する流れとなります。

追加ができたら以下の画面が表示されますので、各項目の設定を行います。

■「正規表現抽出」の設定

今回は例として以下の様に設定を行いました。設定が必須の項目についてご説明させていただきます。

① Field to check

抽出したい値の対象を選択します。今回は、「Body」を選択してください。
※CSRFトークンを抽出するページのGETリクエストのレスポンスボディを利用するため。

② 参照名

抽出した値(今回はCSRFトークン)が入る変数を入力します。後ほど、POST送信する際のCSRFパラメータの値として使用します。任意の文字列を入力してください。

③ 正規表現

CSRFトークンが入るinputタグを入力します。value属性の値を正規表現で書くことで、CSRFトークンの値を取得できます。
※上記画像の入力内容は一例となります。実際に画面表示のレスポンスで取得できるinputタグの形式に合わせて修正してください。inputタグの形式が異なるとCSRFトークンの値が取得できません(id属性の有無や、name属性の入力ミスなど)。特につまづきやすいポイントになるため、可能であれば、実際にデベロッパーツールでhtml内のinputタグをコピーしてvalue属性の値を修正して利用する事をおすすめいたします。

④ テンプレート

抽出した値の「~番目」を使用するかを指定します。特に指定がなければ、最初に取得した値を使うため、「$1$」を入力してください。

正規表現抽出の設定は以上となります。

取得したトークンを使用したPOSTリクエスト

では、次に取得したCSRFトークンをリクエストパラメータに含めてPOST送信する方法をご紹介いたします。

以下にリクエストパラメータの設定例を掲載いたしました。

設定は非常に簡単で、対象となるPOSTリクエストのサンプラーに「${正規表現抽出で設定した参照名}」の形式でパラメータを設定する事で、取得したCSRFトークンを送る事ができます。

あとは状況に応じて、リクエストヘッダや、その他必要なパラメータを設定して完了となります。

おまけ(覚えておきたいJMeterの設定)

冒頭でご紹介させていただきました通り、JMeterの「覚えておきたい設定」を2つご紹介させていただきます。

■ Basic認証

負荷試験を実施する際、Basic認証が必要な場合は「HTTP認証マネージャ」を使用する事でログインする事ができます。
HTTP認証マネージャは「スレッドグループ」、「シンプルコントローラ」、もしくはBasic認証が必要な「最初のHTTPリクエストのサンプラー」のいずれでも追加が可能です。
『追加』→『設定エレメント』→『HTTP認証マネージャ』で追加する事ができます。

HTTP認証マネージャの追加ができましたら、上記画面が表示されますので、「基底URL」「ユーザー名」「パスワード」を入力し、設定は完了となります。

■ HTTPクッキーマネージャ

続いて、シナリオで cookie 保持が必要な場合についてですが、こちらは、「HTTPクッキーマネージャ」を設定する事で cookie情報の利用が可能となります。
HTTPクッキーマネージャも「スレッドグループ」、「シンプルコントローラ」、「サンプラー」のいずれにも追加が可能で、『追加』→『設定エレメント』→『HTTPクッキーマネージャ』で追加する事ができます。

追加できましたら上記画面が表示されますが、HTTPクッキーマネージャは特段、テストに使用したい値がなければ、このまま利用する事ができます。
※「繰り返しごとにクッキーを破棄しますか?」の項目ですが、こちらはチェックを入れる事でループ毎のクッキーを破棄する事ができます。
※HTTPクッキーマネージャ追加後、シナリオを実行し、リクエストボディで Cookie Data が送られている事が確認できたら設定は完了となります。

最後に

私が所属するシステム開発のサービスサイト「SEKARAKU Lab(セカラク ラボ)」を開設しました。
ビヨンドは、サーバーの設計・構築から運用までをワンストップでお任せいただけますので、サーバーサイド開発でお困りの方はお気軽にお問い合わせください。
SEKARAKU Lab:[https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

今回は以上となります!
最後までお読みいただきまして、ありがとうございました!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
3
読み込み中...
3 票, 平均: 1.00 / 13
2,124
facebook twitter はてなブックマーク
【オンラインRPG】転生したらビヨンドのインターンだった件【プレイ無料】

【オンラインRPG】転生したらビヨンドのインターンだった件【プレイ無料】

この記事をかいた人

About the author

福井 浩人

2020年6月にビヨンドに入社。システム開発部 (横浜オフィス) にて勤務。
業務ではPHPを中心に、ゲームAPIやWebシステムの開発、Shopifyプライベートアプリの開発を担当。
洋楽を主として音楽全般が好きで趣味でギターを弾いている。好きなTV番組は、「探偵!ナイトスクープ」「出没!アド街ック天国」。