First CH Apps / セキュリティヘッダー採点
URLを入れると、そのページのHTTPレスポンスヘッダーをサーバー側で取得し、主要な6つのセキュリティヘッダーを100点満点で採点してA〜Fの評価を出します。値の中身(CSPの緩さ・HSTSのmax-age など)まで見て、不足している箇所には推奨設定例を添えます。
見るのはHTTPレスポンスヘッダーだけです。title・meta description・OGP などページの中身は「メタタグ・SEO基本診断」、AI検索向けの採点は「GEO簡易チェッカー」が担当します。
配点は合計100点です。ヘッダーの有無だけでなく、値の内容も見ます。
| Content-Security-Policy(30点) | 設置18点+default-src/script-src 4点+script-src に 'unsafe-inline' が無い(nonce/hash併用を含む)4点+object-src 'none' 2点+base-uri 2点。Report-Only だけの場合は強制されていないため6点。 |
|---|---|
| Strict-Transport-Security(20点) | 設置10点+max-age 31536000秒以上6点(1日以上なら3点)+includeSubDomains 3点+preload 1点。HTTP配信時は0点。 |
| X-Content-Type-Options(12点) | nosniff なら満点。他の値は4点。 |
| X-Frame-Options(12点) | DENY で満点、SAMEORIGIN は11点。CSP の frame-ancestors で制限されていれば、このヘッダーが無くても満点とします(後継の仕様のため)。ALLOW-FROM は廃止済みで5点。 |
| Referrer-Policy(13点) | no-referrer / same-origin / strict-origin / strict-origin-when-cross-origin なら満点。origin 系は8点、unsafe-url は2点。 |
| Permissions-Policy(13点) | 設置9点+camera・microphone・geolocation の3つすべてに指定があれば4点。旧仕様の Feature-Policy だけなら5点。 |
評価の区切り: A: 100〜90点 / B: 89〜75点 / C: 74〜60点 / D: 59〜45点 / E: 44〜30点 / F: 29点以下。HTTPで配信されている場合は上限を D とします。
採点はヘッダーの機械的な検査です。満点でもアプリケーション側の脆弱性が無いことは意味しません。逆に、埋め込み配信が前提のページなど、あえて緩めるべき場面もあります。
CSP は導入時に既存の表示を壊しやすいヘッダーです。まず Content-Security-Policy-Report-Only で違反を観測し、影響を確認してから強制へ切り替えてください。
HSTS の includeSubDomains と preload は、全サブドメインをHTTPSで運用できていることを確認してから付けます(HTTPのままのサブドメインがあると到達できなくなります)。
CDNやWAFを挟んでいる場合、ヘッダーはそこで付与・上書きされることがあります。設定を変えたのに反映されないときは配信経路の各段をご確認ください。
送るもの: 入力されたURLだけ。当社サーバー(Cloudflare Workers)がそのURLを公開ページとして1回だけGETで取得します(Cookie・認証情報は送りません)。
保存するもの: ありません。採点はリクエストの中だけで完結し、URL・結果ともデータベース(KV/D1)へ書き込みません。処理が終わった時点でメモリから消えます。
返すもの: 採点結果と、採点対象として決め打ちした上記ヘッダーの値だけです(1本あたり500字で切ります)。取得したページの本文は返しません=このアプリは他サイトを閲覧するための中継として使えません。
注意: 取得は公開GETのみで、社内ネットワーク・localhost・プライベートIP宛のURLは受け付けません。ログインが必要なページ、アクセス元で応答を変えるサイトは正しく採点できないことがあります。
POST /headers/api/inspect に JSON({"url": "https://example.com/"})またはフォームを送ると、同じ採点結果を JSON で返します。