📌

CloudflareのHAR Sanitizerでお手軽にHARファイルから機密情報を削除する

2024/03/03に公開

HARファイルとは

ブラウザにおける通信ログのフォーマットとしてHAR(HTTP Archive)ファイルがある。開発者ツールにおけるネットワークタブで表示されるような通信ログをファイル出力することで、トラブルシューティングに役立てることができる。

AWSサポートにおいても通信まわりのエラーに遭遇したらHARファイルの共有を求めれられる場合がある。

https://repost.aws/ja/knowledge-center/support-case-browser-har-file

HARファイルから機密情報を削除したい

HARファイルにはさまざまな機密情報が含まれている。例えばcookieやセッショントークンなど。トラブルシュートのためにログとして残す上では機密情報は取り除いた上で保存したい。

また、リクエスト・レスポンス中に画像ファイルやJavaScriptなどが含まれているとHARファイルにもこれらの情報が記録される。このため、HARファイルもあっという間に肥大化してしまう。保存共有する上では不要なコンテンツは削除して必要な情報のみログ共有したい。

こういった状況を踏まえてHARファイルから機密情報などの不要な情報を削除したい。しかし、こういったログファイルから不要な情報を適切に選択して削除することは非常に面倒。人手で処理するにはログ量が多過ぎるし、かといってjqなどで加工するにはファイルが複雑。そのための専用のソフトウェアが必要となる。

HAR Sanitizer

HARファイルから機密情報などを取り除くためのソフトウェアはいろいろあるようだが、CloudflareのHAR Sanitizerがよさそう。HAR SanitizerはOSSとして公開されておりローカルでも実行できるし、Cloudflare Pagesで動作しているサービスをそのまま利用することもできる。

https://github.com/cloudflare/har-sanitizer
https://har-sanitizer.pages.dev/

実際に、zenn.devのHARファイルを参照したときの動作は以下の通り。参照したHARファイルに含まれているCookieやHeaderなどが表示さる。これに対して削除したい要素を選択した上でDownload Sanitized HAR ボタンを選択することで、削除された情報が XXX redacted に置き換えられる。

具体的にどのような値が格納されているかはサービス上では確認できないので、どのCookieやHeaderを削除すればよいかは実際にログを参照したりしながら判断する必要がある。

...
    "entries": [
      {
        "startedDateTime": "2024-03-03T10:14:25.920+09:00",
        "request": {
          "bodySize": 0,
          "method": "GET",
          "url": "https://zenn.dev/",
          "httpVersion": "HTTP/2",
          "headers": [
            {
              "name": "Host",
              "value": "[Host redacted]"
            },
            {
              "name": "User-Agent",
              "value": "[User-Agent redacted]"
            },
            {
              "name": "Accept",
              "value": "[Accept redacted]"
            },
...

Discussion