# Webサイトのコード内にあるシークレットキー

パスワードやキーが公開されているサイトのコードに入ると、誰でも読み取れてしまう理由と、そうなった場合の対処法です。

Webサイトのコードはビジターのブラウザで実行されるため、ブラウザがそのコードをダウンロードする必要があります。誰でもそれを開いて読めます。

ほとんどのコードであれば、それで問題ありません。問題になるのは、決済アカウント、データベース、AI サービスのキーといった**シークレット**がコードに入ってしまう場合です。

## 発生する経緯

意図的に入れられることはほとんどありません。テスト中に貼り付けたキーを、削除し忘れることがあります。サーバー向けの設定を、誤って公開扱いにしてしまうこともあります。ビルドツールが、実際のサイトと一緒に、コードの読める版である**ソースマップ**を公開してしまうこともあります。

攻撃者は、何百万ものサイトからこうしたキーを自動で探します。漏えいしたキーは、数時間のうちに請求額を増やしたり、顧客データを読み取ったり、あなたになりすましてメールを送ったりするおそれがあります。

## スキャンで見つかった場合の対処法

1. **使われたものとして扱ってください。** 今すぐ削除しても、すでに誰かが入手している可能性があります。
2. **取り替えてください。** キーを発行したサービスで新しいキーを作成し、古いキーを削除します。
3. **サーバー側に移してください。** キーはサーバーの設定に置くべきもので、ブラウザで実行されるコードに置いてはいけません。
4. **そのサービスの請求内容とログを確認してください。** 身に覚えのない操作がないか調べます。

決済フォームのキーのように、公開することを前提としたキーもあります。このキーでできるのは決済の開始だけです。スキャンは、見つかったキーの種類と、その判定の確からしさを示します。

> **Careful**
>
> キーは、コードから削除するよりも取り替えることが重要です。削除しても、新しいコピーが作られなくなるだけです。

> **Try it**
>
> [修正が必要な項目](/app/findings)を開き、キーやシークレットに関する項目がないか確認してください。