2017-04-06 49 views
1

csrfトークンを使用するhtmlログインフォームを使用して基本的なApache Jmeterシナリオを記録しました。次のようにアプリケーションによって記録されたトークンが見えApache Jmeter - CSRFトークンが一致しない

サンプル:

<input id="csrf_token" name="csrf_token" type="hidden" value="IjU5NzBhMmI3ODNjZGVjMGUwYmI2YTU4ZjRkMTk0MjI0MTg3OTJlNDAi.C8ecSA.PkvdB0aM2M0rfhSLcb_ktyeInfs"> 

のApache JMeterのポストプロセッサ(REGEX)を使用するには、私は次の式で値を抽出しています:

input id="csrf_token" name="csrf_token" type="hidden" value="(.+?)" 

結果は成功と値であり、 CSRF_VALUE変数に割り当てられます。

username=username&password=password&csrf_token=IjU5NzBhMmI3ODNjZGVjMGUwYmI2YTU4ZjRkMTk0MjI0MTg3OTJlNDAi.C8ecSA.PkvdB0aM2M0rfhSLcb_ktyeInfs&submit=Zaloguj+si%C4%99 

しかし、ウェブサイトは、CSRFトークンが一致しないというエラーを返します:私は次のようにポストデータが見え、ウェブサイトへのログイン情報をトークンを送信しています次のステップで

。記録されたシナリオと変更されたシナリオの間で変更されたのは、フォローアップ要求にcsrfトークンを抽出して配置することだけです。このシナリオを再生するたびに、結果が確認され、csrfトークンが受信されたことを示します。 == csrfトークンはです。しかし、同じエラーでログインに失敗します - csrfトークンが一致しません。

これまでのところ、私は何が間違っているのか、非常に簡単なシナリオを得ることはできませんが、まだ問題があります。私はApacheのjmeter 3.1を使用しています。私はリクエストボディ部品以外のチェックをお勧めし

+0

本当にですか?私は昨日から同じ問題に取り組んでいるだけです。 – user568021

答えて

0

、すなわち

  • CSRFトークンがリクエストヘッダにあることを期待して、あなたのアプリケーションは、そのような場合には、あなたは、関連するヘッダを送信するためにHTTP Header Managerを追加する必要があります
  • アプリケーションでCSRFトークン値を持つCookieが必要になることがあります。その場合は、HTTP Cookie Manager
  • HTMLエンコーディングとデコードに問題がある可能性があります。つまり、抽出されたトークン値にはHTMLで許可されていないエスケープエンティティがあるため、余分な文字が含まれることがあります。あなたはトークン値

は慎重に、ブラウザとのJMeterのView Results Treeリスナーに開発ツールを使用して、要求と応答を検査正規化する__unescapeHtml()ようJMeter Functionsを使用する必要がありますその場合は、最も可能性の高い理由は、上記記載されています。

How to Load Test CSRF-Protected Web Sitesガイドをチェックしてください。

+0

ヒントをいただきありがとうございます。httpテストを行ってからしばらくお待ちください。私はあなたの助言を続け、欠けている部分を見つけました。 –

+0

欠けていた部分は何でしたか?私の場合は – user568021

+0

クッキーマネージャー –

関連する問題