Q&A
訂正
当初「日本語文字化け」として投稿しましたが、調査の結果、
「英半角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: PleskLinABCDEFGHIJKLMNOPQRST
※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で確認できました
・今回トグルボタンは、錠前オン、地球オン、クッキーオン、リダイレクトオフ
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。