スキャンの仕組み
公開されている URL を入力すると、Watchpost は攻撃者と同じ外部からの視点でサイトを確認します。標準スキャンはパッシブかつ読み取り専用です。トップページとその JavaScript を読み込み、TLS ハンドシェイクを行い、DNS を照会し、/.env や /.git/config などのよく知られたパスを少数リクエストします。
フォームの送信、ログインの試行、エクスプロイトペイロードの送信は一切行いません。ほとんどのスキャンは 1 分以内に完了します。同じホストに対する結果は 24 時間再利用されるため、繰り返しスキャンしてもサーバーに再度アクセスすることはありません。
実施するすべてのチェック項目はチェック一覧でご確認いただけます。
パッシブスキャンとディープスキャン
- パッシブ:どなたでも任意の公開サイトに対して実行できます。すでに公開されている情報のみを読み取ります。
- ディープ:ドメインの所有権を確認済みのログインユーザーのみが利用できます。ディープチェックでは設定を能動的に検査します。たとえば、サイトに含まれる公開キーで Supabase のテーブルや Firebase のデータベースを読み取れるかどうかを確認します。
ディープチェックで記録するのは件数と名前のみ(例:「テーブル profiles:1,204 行が読み取り可能」)であり、データそのものは記録しません。ディープスキャンのレポートはサイト所有者のみが閲覧できます。
ドメインの所有権確認
ダッシュボードからサイトを追加すると、トークンが発行されます。以下のいずれか 1 つの方法でトークンを公開し、確認を押してください。
- ホストに DNS TXT レコードを追加:
watchpost-verify=<token> - トークンを記載したファイルを
https://your-domain/.well-known/watchpost-verify.txtに配置 - トップページの
<head>にメタタグを追加:<meta name="watchpost-verify" content="<token>">
所有権の確認から 30 日以上経過している場合、ディープスキャンの前に再確認を行います。トークンが見つからない場合は、再確認が完了するまでディープスキャンが再びロックされます。
制限
- 匿名スキャン:IP アドレスごとに 1 分あたり 5 回、1 日あたり 50 回まで。
- 同じホストに対する結果は 24 時間キャッシュされます。
- 所有するサイト:パッシブ再スキャンは 5 分ごと、ディープスキャンは 1 時間に 1 回まで。
- 1 アカウントあたり最大 20 サイトまで。
スコアとグレード
各スキャンは 100 点から始まります。検出事項ごとに深刻度に応じて減点されます(重大 40 点、高 15 点、中 5 点、低 1 点)。スコアはグレードに変換されます:A 90 点以上、B 75 点以上、C 60 点以上、D 40 点以上、F 40 点未満。重大な検出事項が 1 つでもある場合、グレードの上限は D となります。
良いグレードは、当サービスのチェック範囲内で問題が見つからなかったことを意味します。ペネトレーションテストではなく、サイトの安全性を保証するものでもありません。
レポートの公開範囲
匿名スキャンのレポートは限定公開です。リンクを知っている人は誰でも閲覧できますが、検索エンジンには掲載されません。アカウントに登録したサイトのレポートは、パッシブ・ディープを問わず、ご本人のみが閲覧できます。
公開 API
ウェブサイトが使用しているものと同じエンドポイントを、上記の制限の範囲内で公開しています。
POST /api/v1/scansに{"url": "https://example.com"}を送信すると{"id": "…"}が返されますGET /api/v1/scans/<id>はステータス、グレード、検出事項を返しますGET /api/v1/checksはチェック一覧を返します
連携の際は、内容がわかる User-Agent を設定してください。