HAR ファイルの機密情報をマスクするツールについて紹介します

HAR ファイルの機密情報をマスクするツールについて紹介します

Clock Icon2022.09.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Here is the English version

こんにちは。アノテーションの中村 (誠) です。
今回は HAR ファイルの機密情報をマスクするツールについて紹介します。

注意事項

本記事で紹介しているツールですべての機密情報を削除できる保証はないため、情報提供前に機密情報が残っていないかを必ず確認してください。

先にツール紹介

詳細は後述しますが、先にツールへのリンクだけ紹介しておきます。

https://github.com/google/har-sanitizer

https://github.com/scottmcmaster/harsanitizer-docker

https://github.com/scottmcmaster/harsanitizer-docker

HAR ファイルとは

以下の弊社ブログでも記載されていますが、HTTP アーカイブ (HAR) ファイルは、最新のネットワークアクティビティをブラウザで記録した JSON ファイルです。

https://dev.classmethod.jp/articles/tsnote-harfile-chrome-supportcase/

AWS サポートへの問い合わせ時に HAR ファイルの取得および共有が必要なケースもあるため、AWS ナレッジセンターでも紹介されています。

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

トラブルシューティングの際に必要な HAR ファイルですが、場合によってはパスワードや Cookie などの機密情報がキャプチャされている場合があります。
弊社テクニカルサポートおよび AWS サポートでは、お客様から共有頂く情報に機密情報が含まれる場合には、必ずマスクしたうえで共有頂くようお願いしています。

技術的なお問い合わせに関するガイドラインより

機密情報が含まれる場合は、確実にマスクしてください。

一括での置換が難しい

HAR ファイルには多数の Cookie などが記載されている場合もあり、すべての機密情報を手作業でマスクするには時間がかかる場合もあります。
また、以下のように機密情報が HAR ファイルの JSON 内で一定の形式ではない場合もあるため、テキストエディタでの置換が難しい場合もあります。

{
  "name": "cookie",
  "value": "xxxxx"
}
{
  "cookies": [
    {
      "name": "cookie-name",
      "value": "xxxx",
      "path": "/",
      "domain": "example.xom",
      "expires": "yyyy-mm-ddThh:mm:ss.000Z",
      "httpOnly": true,
      "secure": true,
      "sameSite": "None"
    }
  ]
}

試しに AWS のマネジメントコンソールで HAR ファイルを取得し、テキストエディタで cookie と検索すると、1,500 件ヒットしました。
このすべてを手作業でマスクするのは非常に効率が悪いと思います。

もちろんセキュリティ上機密情報をマスクするのは必須なのですが、エンジニアがやりたいことは開発や運用作業であって、機密情報のマスクではないはずです。

そこで、HAR ファイルに含まれる機密情報を一括でマスクするツールについて調査したところ、冒頭に記載した 3 つのツールを見つけたので紹介します。

置換ツール 1 HAR Sanitizer

1 つ目のツールは、HAR Sanitizer です。

https://github.com/google/har-sanitizer

こちらのツールは、Google の GitHub リポジトリにありますが、リポジトリ内でも Google の公式製品ではないことが明記されています。

使い方は簡単で、上記 GitHub にアクセスし、ライブバージョンという以下の URL にアクセスするだけです。

https://har-sanitizer.appspot.com/

上記の URL にアクセスすると、以下の画面が表示されます。

2022-09-15_14h59_02-960x113

右上の「LOAD HAR」をクリックして HAR ファイルを選択すると、「COOKIES」, 「HEADERS」, 「URLQUERY/POSTDATA PARAMS」, 「CONTENT MIMETYPES」の 4 つが表示されます。

2022-09-15_14h25_01

2022-09-15_14h25_28

2022-09-15_14h25_33

2022-09-15_14h25_37

各項目ごとに、チェックボックスがあり、チェックボックスをオンにすることで対象の項目がマスク対象となります。

試しにダミーの HAR ファイルを使用し、「COOKIES」で「All Cookies」を選択して HAR ファイルをダウンロードします。

2022-09-15_14h29_08-960x669

2022-09-15_14h29_57

ダウンロードした HAR ファイルで Cookie の値を確認すると、以下のようにマスクされていました。

{
  "cookies": [
    {
      "name": "1P_JAR",
      "value": "[1P_JAR redacted]",
      "path": "/",
      "domain": "example.xom",
      "expires": "yyyy-mm-ddThh:mm:ss.000Z",
      "httpOnly": true,
      "secure": true,
      "secure": true,
      "sameSite": "None"
    }
  ]
}

どうやら Cookie の 値を、[cookie-name redacted] に置換するという挙動のようです。
Cookie 以外も上記の値でマスクされていました。

これは便利です!

しかし、HAR Sanitizer の懸念点として、Web サイトに機密情報が含まれている HAR ファイルをアップロードするというリスクがあります。
もし HAR ファイルの内容を第三者に盗まれると、AWS 環境への不正アクセスなどが行われる危険があります。

そこで、ローカル環境で実行できるツールについて調査したところ、2 つ目に紹介するツールが見つかったので紹介します。

置換ツール 2 harsanitizer-docker

名前の通り、先ほど紹介した HAR Sanitizer を Docker 環境で使用できるようにしたツールです。

https://github.com/scottmcmaster/harsanitizer-docker

こちらは Google ではない個人の開発者の方の GitHub リポジトリだと思いますが、動作確認はできたので紹介します。

前提として、Docker のインストールが必要なので、Docker のインストールは Docker のドキュメント を参考に実施してください。

harsanitizer-docker の中身は HAR Sanitizer と同じだったので、やることは README に書いてある通り、docker run コマンドを実行するだけです。

$ docker run -d -p 8080:8080 scottmcmaster/harsanitizer:1.1

コンテナが起動したら、ローカルホストの 8080 番ポートにアクセスします。

http://localhost:8080

以下の通り、ローカル環境でも HAR Sanitizer にアクセスできることが確認できました。

2022-09-15_14h48_28-1-960x55

あとは HAR Sanitizer と同様の手順なので、これで Web サイトに HAR ファイルをアップロードすることなく機密情報をマスクすることができます。

参考までに Cloud9 で起動する際の手順についても紹介します。

  1. Cloud9 の EC2 環境を作成します
  2. ターミナルで docker run -d -p 8080:8080 scottmcmaster/harsanitizer:1.1 コマンドを実行します。
  3. コマンド実行終了後、Preview Runnnig Application をクリックします。
  4. プレビュー状態でも HAR Sanitizer は使用できますが、画面を大きくした場合には画面右上の別タブで開くアイコンをクリックしてください。

2023-07-12_09h10_22-1-640x347

2023-07-12_09h12_04-1-640x347

2023-07-12_09h13_40-640x347

置換ツール 3 cloudflare/har-sanitizer

Cloudflare の GitHub でも har-sanitizer が提供されていました。

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

必要な手順は以下の通りです。

$ git clone https://github.com/cloudflare/har-sanitizer.git
$ cd har-sanitizer
$ npm run dev

なお、concurrently に関するエラーが発生した場合は concurrently もインストールしてください。

$ npm i concurrently
$ npm run dev

実行が成功した場合、以下のようにローカルの URL が表示されるのでアクセスします。

➜  Local:   http://127.0.0.1:3000/

2023-10-31_14h49_22-640x312

余談

HAR ファイルの機密情報を一括でマスクする方法について調査していたのは私だけではなかったです。

https://stackoverflow.com/questions/65853586/how-to-remove-cookie-value-from-har-file-before-sharing-it-with-another-person

https://issues.chromium.org/issues/40441005

上記の参考サイトではコマンドで置換する方法も紹介されていましたので、コマンドが好きな方は参考サイトをご覧ください。

まとめ

今回は HAR ファイルの機密情報をマスクするツールについて紹介しました。
HAR ファイルには予期せず機密情報が含まれている場合もありますので、会社や個人の情報を守るためにも、マスクツールなどはうまく使っていきましょう。

本記事が参考になれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社 WEB サイトをご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.