質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1242閲覧

OWASP ZAPが「Content-Encoding: br」で圧縮するため、レスポンスBody文字化けか?

sugoidaizu

総合スコア5

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2023/02/17 05:46

編集2023/02/28 09:09

訂正

当初「日本語文字化け」として投稿しましたが、調査の結果、
「英半角20文字以上文字化け」であったことがわかり、訂正します。

文字化けするレスポンスに「Content-Encoding: br」が付加されていました。
リクエストを再送信する前に「Accept-Encoding:br」を解除することで、文字化けを回避できました。
これが標準的な解決方法か疑問があるので、しばらく、回答待ちとさせてください。

実現したいこと

OWASP ZAP2.12.0にて、レスポンスBodyが英半角20文字以上だと文字化けします。
この文字化けを解消する方法がわかりましたら、教えてください。

現在の状況

イメージ説明

※オプションダイアログの後ろにある、「S□□1□I[□□DQ」などが、文字化け箇所です。

試したこと1(日本語のフォントの問題ではなかった様子)

「ツール」→「オプション」→「表示」→「Work Panels Font」にて、フォントを変更しても、解決しませんでした。

試したこと2(英半角20文字以上で再現した)

レスポンスが、英半角20文字未満だと文字化けせず、20文字以上だと文字化けすることが、わかりました。

リクエスト(共通)

GET https://●●●●●●●●●●.●●●●..com/abc.txt HTTP/1.1
Host: ●●●●●●●●●●.●●●●.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Authorization: Basic ●●●●●●●●●●●●●●●●●●●●
Connection: keep-alive
Cookie: CakeCookie[User][lang]=ja; CAKEPHP=●●●●●●●●●●●●●●●●●●●●●●●●●●; checkcookie=true
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Content-Length: 0

レスポンスHeader(3文字の場合)

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 17 Feb 2023 08:30:40 GMT
Content-Type: text/plain
Content-Length: 3
Connection: keep-alive
X-Accel-Version: 0.01
Last-Modified: Fri, 17 Feb 2023 08:24:57 GMT
ETag: "3-5f4e10c7cd05c"
Accept-Ranges: bytes
x-frame-options: SAMEORIGIN
x-xss-protection: 1;mode=block
x-content-type-options: nosniff
strict-transport-security: max-age=31536000
Strict-Transport-Security: max-age=15768000
X-Powered-By: PleskLin

レスポンスBody(3文字の場合)

AAA

レスポンスHeader(20文字の場合)

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 17 Feb 2023 08:34:00 GMT
Content-Type: text/plain
Connection: keep-alive
X-Accel-Version: 0.01
Last-Modified: Fri, 17 Feb 2023 08:30:46 GMT
ETag: W/"14-5f4e121464380"
x-frame-options: SAMEORIGIN
x-xss-protection: 1;mode=block
x-content-type-options: nosniff
strict-transport-security: max-age=31536000
Strict-Transport-Security: max-age=15768000
X-Powered-By: PleskLin
Content-Encoding: br
Content-Length: 25

レスポンスBody(20文字の場合)

!L □ABCDEFGHIJKLMNOPQRST□

イメージ説明

疑問

つまり、レスポンスを20文字にしたとき、前に4バイト、後ろに1バイト、付加されており、このために文字化けしているように見えます。この5バイトは何者で、どのように扱えばよいのか、疑問です。

試したこと3(burp suiteでは再現しなかった)

HTTP/2 200 OK
Server: nginx
Date: Mon, 20 Feb 2023 01:20:56 GMT
Content-Type: text/plain
Content-Length: 20
Last-Modified: Fri, 17 Feb 2023 08:30:46 GMT
Etag: "14-5f4e121464380"
Accept-Ranges: bytes
X-Frame-Options: SAMEORIGIN
X-Xss-Protection: 1;mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
Strict-Transport-Security: max-age=15768000
X-Powered-By: PleskLin

ABCDEFGHIJKLMNOPQRST

※OWASP ZAPが、「Content-Encoding: br」という圧縮を行っているように見えます。
そうであれば、これをどう扱えばよいのか、止めさせる方法はあるのか。。。

試したこと4(リクエストで解除したら化けなくなった)

リクエストを再送信する前に、「Accept-Encoding:br」を解除すると、文字化けがなくなりました。1作業行えば、化けなくなることがわかりました。

before) Accept-Encoding: gzip, deflate, br
after) Accept-Encoding: gzip, deflate

※毎回送信時に解除するのが適切か?、firefoxの設定で初めから外せないか?、OWASPが圧縮しているなら止められないか?、適切な方法をご存じでしたら教えてください。

環境

  • OWASP ZAP2.12.0
  • Windows10
  • Java(TM) SE Development Kit 19.0.1 (64-bit)

蛇足メモ

手動リクエストにおける、自動ログインの設定に成功しました。
・Use Global HTTP State をオンにする
・「firefox→OWSP ZAP→burp proxy→目的サイト」というようにlocal proxyを二重にすると、認証の詳細をburpで確認できました
・今回トグルボタンは、錠前オン、地球オン、クッキーオン、リダイレクトオフ

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

手動リクエストを再送信する前に、「Accept-Encoding:br」を解除すると、文字化けがなくなりました。

before) Accept-Encoding: gzip, deflate, br
after) Accept-Encoding: gzip, deflate

投稿2023/02/28 00:09

sugoidaizu

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問