まず結論から
- 手動確認なら:SecurityHeaders.io(無料)または Mozilla Observatory(無料)で十分
- 自動化・CI/CD統合なら:機械可読JSONを返す専用APIを使う($0.05/コール〜)
- AIエージェント・n8n組み込みなら:アカウント不要・都度払いのAPIが最適
はじめに:セキュリティヘッダーはなぜ重要か
Webサイトがブラウザに返すHTTPレスポンスには、「セキュリティヘッダー」と呼ばれる設定値が含まれている。これらが正しく設定されていないと、XSS(クロスサイトスクリプティング)やクリックジャッキング、HTTPSダウングレード攻撃といった脆弱性を招く。
よく確認すべきセキュリティヘッダーは以下の通りだ。
| ヘッダー名 | 役割 |
|---|---|
Strict-Transport-Security(HSTS) |
ブラウザに常にHTTPS接続を強制する |
Content-Security-Policy(CSP) |
読み込み可能なリソースの出所を制限してXSSを防ぐ |
X-Frame-Options |
他サイトへの埋め込み(iframe)を禁止してクリックジャッキングを防ぐ |
X-Content-Type-Options |
MIMEタイプ偽装によるコンテンツスニッフィングを防ぐ |
Referrer-Policy |
ページ遷移時のリファラー情報の送信範囲を制御する |
Permissions-Policy |
カメラ・位置情報などブラウザAPIの使用権限を制限する |
これらを「手動で確認するか」「自動チェックするか」によって、適切なツールは異なる。
無料ブラウザツール3選
1. SecurityHeaders.io(securityheaders.com)
英国のセキュリティ研究者 Scott Helme が運営する最もメジャーなチェックツール。URLを入力するだけで A+ 〜 F のグレードとヘッダー一覧を表示する。
- 料金: 無料
- 使い方: URLを入力 → スキャン → グレードとヘッダー詳細を確認
- 特徴: シンプルなUI、A+ 〜 F の明快なグレーディング、ヘッダーごとの改善リンク
- 制限: 結果はブラウザ表示のみ、自動化には向かない。JSONエクスポートや有料API機能の有無については(最新情報は公式サイトでご確認ください)
2. Mozilla Observatory(observatory.mozilla.org)
Mozilla が提供する無料の総合セキュリティチェックツール。セキュリティヘッダーに加え、Cookie の Secure / HttpOnly 属性、サブリソース整合性(SRI)なども評価する。
- 料金: 無料
- 使い方: サイトURLを入力 → スキャン → スコアと詳細レポート確認
- 特徴: Cookie設定やSRIも含む幅広い評価、改善のための具体的な指示
- API: 公開APIあり(v2)—
POST https://observatory-api.mdn.mozilla.net/api/v2/scan?host=example.comでJSONレスポンスを取得可能。旧v1 APIは2024年10月31日に廃止済み - 制限: スキャンに数十秒かかる場合あり、同一サイトの再スキャンは60秒間隔の制限あり
3. Google Lighthouse
Chrome DevTools または CLI から実行できる総合パフォーマンス・品質計測ツール。「Best Practices」スコアの中でHTTPS強制やCSPの有無が評価される。
- 料金: 無料
- 使い方: Chrome DevTools → Lighthouse タブ → 「Best Practices」を選択してスキャン
- 特徴: パフォーマンス・SEO・アクセシビリティも同時評価、CI統合可能
- 制限: セキュリティヘッダー専門ではない、スコアが概括的
自動化に向く:機械可読JSON APIの使い方
月に数十サイト以上をチェックしたい場合、n8n / Make ワークフローに組み込みたい場合、またはCI/CDパイプラインでデプロイ時に自動確認したい場合は、ブラウザツールでは対応できない。
機械可読JSONを返すAPIが必要になる。
Website Security Snapshot API(api.cybersecurity-japan.com)
Cloudflare Workers 上で動作する都度払いAPIで、URLを送信すると主要なセキュリティヘッダーの有無を機械可読JSONで返す。
特徴:
- アカウント不要、APIキー不要
- 料金は 0.05 USDC(約¥7)/コール(x402プロトコルによるオンチェーン決済)
- SSRF(サーバーサイドリクエストフォージェリー)対策済み — プライベートIPやlocalhost等への誘導を防止
- リダイレクトチェーンの追跡、最終URL取得にも対応
無料デモ(支払い不要で試せる):
curl https://api.cybersecurity-japan.com/demo/snapshot
レスポンス例:
{
"requested_url": "https://example.com",
"final_url": "https://example.com/",
"reachable": true,
"https_ok": true,
"hsts_present": true,
"csp_present": false,
"x_frame_options_present": true,
"x_content_type_options_present": true,
"referrer_policy_present": false,
"permissions_policy_present": false,
"security_txt_present": false,
"robots_txt_present": true,
"sitemap_xml_present": true
}
TypeScriptからの呼び出し例:
import { wrapFetchWithPayment, createSigner } from "x402-fetch";
const signer = await createSigner("base", "0xYOUR_PRIVATE_KEY");
const fetch402 = wrapFetchWithPayment(fetch, signer);
const res = await fetch402("https://api.cybersecurity-japan.com/v1/snapshot", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://example.com" }),
});
const data = await res.json();
console.log(data.hsts_present); // true
npmクライアントライブラリ(security-snapshot-api)も利用可能。
ツール比較表
| SecurityHeaders.io | Mozilla Observatory | Security Snapshot API | |
|---|---|---|---|
| 料金 | 無料 | 無料 | $0.05/コール |
| 機械可読JSON | ❌ | ✅(v2 API) | ✅ |
| 自動化・CI統合 | 難しい | 部分的(公開API経由) | ✅ |
| n8n/Make対応 | ❌ | 部分的 | ✅ |
| AIエージェント対応 | ❌ | ❌ | ✅(x402自律支払い) |
| アカウント不要 | ✅ | ✅ | ✅ |
| リダイレクト追跡 | 部分的 | 部分的 | ✅ |
| SSRF対策 | N/A | N/A | ✅ |
| security.txt検出 | ❌ | ❌ | ✅ |
| APIキー | 不要 | 不要 | 不要(x402決済) |
どちらを選ぶべきか
ブラウザツール(無料)が向いているケース
- 自分のサイトや特定サイトを月1〜2回手動で確認したい
- セキュリティヘッダーの改善方針を読んで理解したい
- 個人開発・小規模サイトのワンショット確認
→ SecurityHeaders.io または Mozilla Observatory を使う
APIが向いているケース
- n8nやMakeのワークフローで定期的に複数サイトを自動監視したい
- CI/CDパイプラインでデプロイ時にセキュリティヘッダーの有無を自動確認したい
- AIエージェントやClaude MCPから自律的にセキュリティ診断させたい
- スクリプトやバッチ処理でJSONを受け取って結果を集計・記録したい
→ Website Security Snapshot API(api.cybersecurity-japan.com)を使う
n8nへの組み込み例
以下は n8n の HTTP Request ノードでこのAPIを呼び出す設定例だ。
- ノード: HTTP Request
- Method: POST
- URL:
https://api.cybersecurity-japan.com/demo/snapshot(テスト時は無料デモエンドポイント) - Content-Type:
application/json - Body:
{"url": "{{$json.target_url}}"}
n8n Community Templates への正式テンプレートも公開されている。
セキュリティヘッダー設定の優先度
どのツールで確認するにせよ、設定すべきヘッダーの優先度はおおむね以下の通りだ。
| 優先度 | ヘッダー | 設定難易度 | 効果 |
|---|---|---|---|
| 🔴 最高 | Strict-Transport-Security |
低(1行) | HTTPSダウングレード防止 |
| 🔴 最高 | X-Content-Type-Options: nosniff |
低(1行) | コンテンツスニッフィング防止 |
| 🔴 最高 | X-Frame-Options: DENY |
低(1行) | クリックジャッキング防止 |
| 🟡 高 | Referrer-Policy |
低(1行) | 情報漏洩リスク低減 |
| 🟡 高 | Permissions-Policy |
低〜中 | ブラウザAPI悪用防止 |
| 🟠 中 | Content-Security-Policy |
高(調整必要) | XSS根本対策 |
まとめ
セキュリティヘッダーの確認は、今や Webサイト運営の基本的な作業だ。手動の年1回確認には無料ブラウザツールで十分だが、自動化・定期監視・AIエージェント統合には機械可読APIが必要になる。
試してみる(無料デモ、支払い不要):
curl https://api.cybersecurity-japan.com/demo/snapshot
ドキュメント・料金: api.cybersecurity-japan.com