小規模ビジネスウェブサイトのセキュリティヘッダー:7つの基準のうち49.7%がNoneを満たさず
Security headers on 4,688 small-business websites: 49.7% met none of 7 criteria (rackcrunch.com)
要約
2026年に実施された米国のディレクトリ掲載小規模ビジネスウェブサイト7,040件を対象とした調査によると、セキュリティヘッダーの導入状況は低いことが明らかになりました。調査対象の4,688サイトのうち、49.7%が7つの主要なセキュリティヘッダー基準のいずれも満たしていませんでした。特に、Content-Security-Policy (CSP) の導入率は21.2%でしたが、その多くはスクリプト保護に有効でない設定でした。この結果は、多くの小規模ビジネスが基本的なウェブセキュリティ対策を怠っている現状を示唆しています。
全文翻訳
米国のディレクトリ掲載小規模ビジネスウェブサイトにおけるセキュリティヘッダー
2026年の調査では、7,040のディレクトリ掲載米国ローカルビジネスウェブサイトが、どのようなセキュリティヘッダーを送信し、何が間違っているかを調査しました。
RACKCRUNCHチーム · スキャン 2026-09-24 · PDF (security-headers-study-2026.pdf, 400 KB, SHA-256 c8fa6a281799ff1f86c79b62f5ba5b52535a4ca9d9b6bdce69d61f5bfaeb6d91) でも利用可能。
なぜ調査したのか
RACKCRUNCHは無料のセキュリティヘッダーチェッカーを提供しています。URLを入力すると、1回の要求を行い、設定されているレスポンスヘッダー、悪く設定されているヘッダー、欠落しているヘッダーを通知します。
一度に1つのサイトをチェックするだけでは、より大きな全体像について知りたくなりました。私たちは銀行や大企業を対象にしたわけではありません。配管工、法律事務所、自動車販売店、ピザ屋など、ウェブセキュリティ担当者がいない可能性のあるビジネスを対象にしました。
それらのビジネスのリストが必要でしたが、クリーンなものは存在しませんでした。そこで、最も近いものとして、人間が編集したDMOZの後継である公開されているCurlieウェブディレクトリを使用しました。2026-02-02のスナップショットに基づき、米国ローカルの「ビジネスと経済」カテゴリからランダムに7,040のディレクトリ行を抽出しました。これらは7,022のユニークな初期登録可能ドメインを表します。これをSMB指向のディレクトリサンプルと考えてください。これらのビジネスの規模はチェックしていません。いくつかは「小規模」よりも大きいでしょうし、ディレクトリは掲載されるのに十分確立されたビジネスに偏っています。このレポートで「サイト」と言う場合、それは米国中のすべての小規模ビジネスではなく、これらのディレクトリ掲載サイトを意味します。
2026-09-24に、各サンプリングされたURLに対して2回のHTTPSリクエストチェーンスキャンを実行し、最大3つのリダイレクトを追跡しました。報告されているすべての推定値は2回目のスキャンからのものです。レスポンスヘッダーを読みましたが、ページ自体は決して読みませんでした。
低い採用率を予想していましたが、それはほぼその通りでした。驚きは、その低さから、そして分解しなければならなかった1つの数字から来ました。
サイトが送信するヘッダー
サンプリングされた7,040行のうち5,642行が、使用可能なHTTPSレスポンスを提供しました。そのうち4,701はHTTP-200レスポンスであり、ユニークな最終登録可能ドメイン4,688から取得されました。これらの4,688ドメインが私たちの主要なベース(データファイルでは「dedup-200」と呼ばれます)です。最終登録可能ドメインごとに1つのHTTP-200レスポンス、2回目のスキャンからのものです。このレポートの先頭にある定義ボックスに、すべてのベースが記載されています。このレポートのすべての数値は、特に断りがない限り、そのベースに基づいています。1
最も単純な質問から始めました。7つの調査定義の明示的なヘッダークライテリアのうち、各サイトが満たしているのはどれか?これらは私たちのルーブリックのクライテリアであり、セキュリティグレードではありません。サイトは合理的にそれらのいくつかを省略することができます。3つについては前置きが必要です。Referrer-Policyヘッダーがない場合、ブラウザはセキュアなデフォルトを使用するため、失敗とはみなしません。ポイントは、セキュアな値を明示的に設定したサイトのみに与えられます。Permissions-Policyはまだ実験的であり、ブラウザ間でのサポートが不均一です。私たちのクライテリアは明示的な宣言を数え、得られた保護を数えるものではありません。Cross-Origin-Opener-Policyはコンテキストに依存します。ポップアップを開いたりクロスオリジンウィンドウを処理したりするサイトにとって最も重要であり、サインインや支払いフローを壊す可能性があります。
私たちのルーブリックにある明示的なクライテリアは、普遍的なものにはほど遠いものでした。
HSTSは最も一般的に観察されたヘッダーで、サイトの43.8%に存在していました。7項目のルーブリックで最も一般的にパスされたクライテリアはX-Content-Type-Options: nosniffで、39.7%でした。私たちのより強力なHSTSクライテリア(1年以上かつincludeSubDomains)を満たしたのはわずか12.3%でした。これを調査定義の強力なHSTSと呼び、最終レスポンスホストのみで測定されます。サイトがwwwにリダイレクトする場合、そこでのincludeSubDomainsはwwwホストをカバーし、ベアドメインやshopのような兄弟ホストはカバーしません。578の強力なHSTSパスのうち、260(45.0%)はwww最終ホストから、316はベアドメインから、2は別のサブドメインからでした。したがって、強力なHSTSパスのほぼ半分では、観測されたポリシーはwwwホスト上にあり、ベアドメインのカバレッジを確立しません。31.2%は、私たちのパーサーの下で認識された制限的な値を持つクリックジャッキングヘッダーを送信します。8.0%は明示的な非ワイルドカードPermissions-Policy宣言を送信し、1.1%は認識された非デフォルトのCross-Origin-Opener-Policy値を送信します。
サイトの86.6%はReferrer-Policyをまったく送信しません。上記のように、これはサウンドよりも悪いものではありません。ヘッダーがない場合、最新のブラウザはstrict-origin-when-cross-originにフォールバックします。これは妥当なデフォルトです。より懸念されるケースは、明示的な弱いレガシー値です。
そして、5サイトに1つが何かを漏らしています。サイトの20.5% [19.3-21.7] は、私たちのバージョン・トークン・ルールに一致しました。Server、X-Powered-By、X-AspNet-Version、またはX-AspNetMvc-Versionのいずれかに数字が含まれている場合です。例:Apache 2.4.x、Microsoft-IIS/10.0、またはnginx 1.x。27サイトでは、唯一の漏洩はASP.NETバージョンヘッダーでした。これはバージョンをターゲットにした偵察に役立つ可能性がありますが、低度の発見です。バージョン番号を隠しても何も修正されません。
主要ベースでの完全なテーブルを以下に示します。区間は、フレームバイアス、パーサーの誤分類、CDNの変動、または選択的なプラットフォームの属性ではなく、指定されたサンプルモデルの下でのサンプリングの不確実性を定量化します。
| コントロール(ユニークHTTP-200ドメイン、n=4,688) | サイト数 | 割合 | 95% CI |
|---|---|---|---|
| HSTSあり | 2,053 | 43.8% | 42.4-45.2 |
| 強力なHSTS:1年以上 + includeSubDomains(最終ホスト) | 578 | 12.3% | 11.4-13.3 |
| HSTSは1年未満 | 665 | 14.2% | 13.2-15.2 |
| CSP適用(ポリシーあり) | 992 | 21.2% | 20.0-22.4 |
| CSPレポートのみ | 37 | 0.8% | 0.6-1.1 |
| CSPがスクリプトを制限 | 186 | 4.0% | 3.4-4.6 |
| 当社のヘッダーのみのスクリプト-CSPルールをパス | 8 | 0.17% | 0.1-0.3 |
| クリックジャッキング保護(認識された制限値) | 1,463 | 31.2% | 29.9-32.5 |
| 無効な値を持つクリックジャッキングヘッダー | 15 | 0.3% | 0.2-0.5 |
| X-Content-Type-Options: nosniff | 1,861 | 39.7% | 38.3-41.1 |
| Referrer-Policyセキュア値設定 | 373 | 8.0% | 7.2-8.8 |
| Referrer-Policy弱い(レガシー値) | 252 | 5.4% | 4.8-6.1 |
| Referrer-Policy無効(認識されない値) | 1 | 0.02% | 0.0-0.1 |
| Referrer-Policy欠落(ブラウザデフォルト適用) | 4,062 | 86.6% | - |
| 明示的な非ワイルドカード Permissions-Policy宣言 | 374 | 8.0% | 7.2-8.8 |
| Permissions-Policyワイルドカードのみ | 10 | 0.2% | 0.1-0.4 |
| COOP same-origin | 35 | 0.7% | 0.5-1.0 |
| COOP same-origin-allow-popups | 15 | 0.3% | 0.2-0.5 |
| COOP noopener-allow-popups または restrict-properties | 0 | 0.0% | 0.0-0.1 |
| 認識された非デフォルトCOOP値(いずれか) | 50 | 1.1% | 0.8-1.4 |
| COOP no-op (unsafe-none) | 19 | 0.4% | 0.3-0.5 |
| COOP不正形式 | 4 | 0.09% | 0.0-0.2 |
| バージョン・トークン開示 | 960 | 20.5% | 19.3-21.7 |
無効なReferrer-Policyは、「Referrer-Policy: yes」を送信するサイトです。
7つのクライテリアを合計すると、見出しの数字が得られます。HTTP-200レスポンスを返したユニークな最終登録可能ドメインのうち、49.7%が調査定義の7つの明示的なヘッダークライテリアのいずれも満たしていませんでした [95% CI 48.3-51.2]、つまり4,688サイト中2,331サイトでした。2 これは採用率の測定値であり、安全でないウェブサイトの割合の推定値ではありません。
エラーページやボットチャレンジページを含む、すべての使用可能なレスポンスに対する同じ測定値は、末尾の感度分析にあります。そのようなレスポンスは、サイトの通常のホームページのヘッダーではなく、CDN、WAF、ホスティングプラットフォーム、またはアプリケーションのエラーページの設定を反映している可能性があるため、それらは主要なベースではありません。
崩壊したCSPの数字
この調査の最初のドラフトでは、CSPの結果はほぼ立派に見えました。約6サイトに1つが「合格」しました。それは高すぎると感じられました。そのため、改訂された分析ではCSPのカウントをやめ、ルーブリックで説明されているCSPレベル3の文書化されたサブセットを実装するパーサーで読み取りを開始しました。
約5サイトに1つ、21.2% [20.0-22.4] が適用されたCSPを送信しています。ポリシーの内容を見ると、それは大丈夫に聞こえます。ほとんどはフレーミングルール(frame-ancestors、これはクリックジャッキング防止でありスクリプト防止ではない)またはupgrade-insecure-requestsです。最も一般的な3つの正確なポリシーは、frame-ancestors 'self'(170サイト)、Shopifyプラットフォームのデフォルトであるblock-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests;(167)、およびベアなupgrade-insecure-requests(130)でした。これらを合わせると、適用されたContent-Security-Policyを送信する992サイトの47.1%を占めます。これら3つのいずれにもスクリプトディレクティブはありません。3
CSPは、インジェクトされたスクリプトに対する防御の深さのための重要な制御です。以下は、ポリシーがスクリプトに対して実際に行っていることによる内訳です。
| CSPクラス(ユニークHTTP-200ドメイン、n=4,688) | サイト数 | 割合 |
|---|---|---|
| 強制CSPなし | 3,696 | 78.8% |
| CSPあり、スクリプト制限ディレクティブなし | 804 | 17.2% |
| スクリプト制限:許可リストベース | 173 | 3.7% |
| スクリプト制限:nonce/hash厳格 | 5 | 0.1% |
| スクリプト制限:strict-dynamicとnonce/hashアンカー | 8 | 0.2% |
| 無効または解析不能 | 2 | 0.04% |
| スクリプト制限合計 | 186 | 4.0% |
残りを台無しにしているのは何でしょうか?ポリシーは複数の行に該当する可能性があります。
| スクリプト制限CSPの特徴 - 全4,688サイトの数と割合 | サイト数 | 割合 |
|---|---|---|
| 'unsafe-inline'がスクリプト要素で有効 | 172 | 3.7% |
| 'unsafe-inline'がインラインイベントハンドラで有効(script-src-attrチェーン) | 170 | 3.6% |
| 'unsafe-inline'が存在するが無効(nonceまたはhashで無効化) | 4 | 0.1% |
| 'unsafe-eval'が有効 | 157 | 3.3% |
| 完全なワイルドカード(ベア*またはスキームソース)が有効 | 81 | 1.7% |
| サブドメインワイルドカード(*.host)が有効なスクリプトディレクティブ | 55 | 1.2% |
| 当社のヘッダーのみのスクリプト-CSPルールをパス | 8 | 0.17% |
これにより、ユニークなHTTP-200ドメイン8つ、0.17% [0.1-0.3] が、当社のヘッダーのみのスクリプト-CSPルールをパスしました。 これは、ポリシーがバイパス不可能であること、またはnonceが新鮮でページマークアップに正しく適用されていることを確立するものではありません。nonceの鮮度、nonceがページのスクリプトと一致するかどうか、または許可リストに登録されたスクリプトホストが悪用される可能性(例:JSONPエンドポイント経由)はテストしていません。8つのポリシーすべてを個別に読み、パーサーがヘッダーを正しく読み取っているか確認しました。8つのうち、スクリプト-src-attrを送信しているものはありません。そのため、インラインイベントハンドラは同じ制限されたscript-srcにフォールバックします。2つはサイト所有者によって書かれたものではなく、ホストされたサイトビルダーによって発行されたポリシーです。1つはスクリプトを一切許可しません。2つは依然としてサブドメインワイルドカードホストをスクリプトソースとして許可しており、これは私たちのルーブリックでは別途報告され、それらに対してカウントされません。
8つ。観察されたCSPのほとんどは、主にフレーミングまたは混合コンテンツディレクティブで構成されていました。
1つの間違いを犯した
この調査のドラフトには、良い瞬間がありました。4,673サイト中6サイトが、8つのルーブリッククライテリアすべてを満たしていました。私たちはその行が好きでした。それは間違いでした。
最初のルーブリックでは、CSPのframe-ancestorsを、クリックジャッキング保護として1回、CSP合格としてもう1回、合計2回クレジットしました。2回目の分析パスでそれを修正しました。また、CSPチェックでスクリプト制限ポリシーが当社のヘッダーのみのルールをパスすることを要求し、COOPのunsafe-noneやPermissions-Policyのワイルドカードのみのようなno-op値のカウントを停止しました。6サイトのそれぞれが、二重カウントされたポイントを失いました。
最初のドラフトでは6サイトが8つのルーブリッククライテリアすべてを満たしていると述べられていましたが、修正されたルーブリックでは1サイトであり、さらに8サイトが7つを満たしました。1サイトは、以前のパーサーが誤って読み取ったstrict-dynamicとnonceを使用するCSPでそこに到達しました。
それらの9サイトのうちいくつかは、再利用された構成と一致するヘッダーパターンを共有しています。1人の開発者またはベンダーのチェックリストが複数のサイトに適用されています。それらのいずれも名前を挙げていません。9サイトでは物語をサポートするには少なすぎ、ヘッダーは変化します。8つのクライテリアすべてを満たしても、サイトの残りの部分については何も語っていません。依然として深刻なアプリケーションの欠陥がある可能性があります。
明示的ヘッダー採用指数
クライテリアを合計すると、サイトごとに1つの数字が得られます。これを明示的ヘッダー採用指数と呼びます。上記の7つのクライテリアに、8番目のバージョン衛生(ソフトウェアバナーにバージョンなし)が追加されます。これは、広く有用な強化からコンテキスト依存の制御、および低度のバナーチェックまで、異質なものをすべて均等に重み付けして混合しています。したがって、これを採用の要約として扱ってください。上記のコントロールごとのテーブルが主な結果です。
[画像: 8つ中満たされたクライテリアの明示的ヘッダー採用指数]
| 満たされたクライテリア(8つ中) | サイト数 | 割合 | 95% CI |
|---|---|---|---|
| 0 | 523 | 11.2% | 10.3-12.1 |
| 1 | 1,979 | 42.2% | 40.8-43.6 |
| 2 | 958 | 20.4% | 19.3-21.6 |
| 3 | 745 | 15.9% | 14.9-17.0 |
| 4 | 221 | 4.7% | 4.1-5.4 |
| 5 | 161 | 3.4% | 2.9-4.0 |
| 6 | 92 | 2.0% | 1.6-2.4 |
| 7 | 8 | 0.2% | 0.1-0.3 |
| 8 | 1 | 0.02% | 0.0-0.1 |
中央値は1、平均は1.80です。0行が「7つなし」の見出しよりも小さいのは、多くのサイトが8番目のクライテリアであるバージョン衛生を満たしているためです。これは、ソフトウェアを発表していないという単純な理由からです。インデックスをサイトのセキュリティの測定値として検証していません。
ヘッダーで識別されたサーバーとホスティングラベル
2回目のスキャンで、バージョン漏洩ヘッダーだけでなく、完全なServerヘッダーを保持しました。Serverトークンとプラットフォーム固有のCSPの間で、4,701のHTTP-200レスポンス(74.0%)のうち3,481にサーバーまたはホスティングラベルを付けることができました。以前のラベリングでは15.0%しか管理できませんでした。最大の単一グループである1,357サイト(28.9%)は、Cloudflare-edgeと呼ぶものです。Serverヘッダーは正確に「cloudflare」と表示されます。これはレスポンスがCloudflareのネットワークを経由したことを示しています。背後にあるサーバーについては何も語っていません。
これらの数値は記述的です。ラベルは自身を識別するサーバーに対してのみ存在するため、ラベル付けされたグループは選択的であり、ここにあるものは、特定のビジネスがホストを移動した場合に何が起こるかについては何も語っていません。一部のラベルはプラットフォーム固有のCSPから来ており、これらは測定されているヘッダーの一部であるため、比較は部分的にそれ自体の結果から構築されています。各レスポンスは固定ルールに従って1つのラベルを取得し、最初に一致したルールが勝ちます。そのため、サイトは2つのラベルを持つことはありません。ビルダーとプラットフォームの署名は、構成を制御する誰かを名前で示すため、最初にきます。次にServerトークンが続きます。ヘッダーが送信されたとおり、マッチングは大文字と小文字を区別します。順序はGoDaddyビルダー、Flywheel、Pagely、Shopify、Wild Apricot、Cloudflare-edge、Microsoft IIS、Apache、nginx、OpenResty、Amazon S3です。正確なルールは、以下のルーブリックの下とデータ辞書に記載されています。
ここで多くの比較を行い、セクターセクションでも行いましたが、多重度補正は適用していません。ラベルまたはカテゴリ間の違いは、プラットフォームの構成、カテゴリの割り当て、レスポンスの傾向、またはどのサーバーが自身をラベル付けするかを反映している可能性があり、ビジネス自体に関するものではありません。
サブグループテーブルは、セクターと状態がサンプリングされたリストに属するため、レスポンス行を保持します。最終的な宛先を重複排除するには、どのサンプリングされたリストの属性を保持するかを決定する必要があります。
[画像: ヘッダーで識別されたラベルごとの7つの基準のいずれも満たさない割合]
| ラベル(探索的) | n | 平均採用指数(8つ中) | 7つなし | 強力なHSTS | スクリプト-CSPルールをパス | クリックジャッキング(認識された値) | nosniff |
|---|---|---|---|---|---|---|---|
| Cloudflare-edge | 1,357 | 1.72 | 59.6% [57.0-62.2] | 8.5% [7.2-10.2] | 0.2% [0.1-0.6] | 18.5% [16.5-20.7] | 32.6% [30.1-35.1] |
| Apache | 898 | 1.35 | 71.0% [68.0-73.9] | 10.1% [8.3-12.3] | 0.1% [0.0-0.6] | 19.6% [17.1-22.3]† | 20.5% [18.0-23.3] |
| nginx | 731 | 1.80 | 49.8% [46.2-53.4]† | 8.2% [6.4-10.4] | 0.3% [0.1-1.0] | 38.9% [35.4-42.4]† | 36.5% [33.1-40.1] |
| Shopify | 168 | 3.01 | 0.0% [0.0-2.2] | 0.0% [0.0-2.2] | 0.0% [0.0-2.2] | 100.0% [97.8-100.0] | 100.0% [97.8-100.0] |
| Microsoft IIS | 104 | 0.58† | 72.1% [62.8-79.8]† | 10.6% [6.0-18.0] | 1.0% [0.2-5.2] | 24.0% [16.8-33.1]† | 14.4% [8.9-22.4] |
| GoDaddy builder | 86 | 2.00 | 0.0% [0.0-4.3] | 100.0% [95.7-100.0] | 0.0% [0.0-4.3] | 100.0% [95.7-100.0] | 0.0% [0.0-4.3] |
| OpenResty | 57 | 1.77 | 35.1% [24.0-48.1] | 7.0% [2.8-16.7] | 0.0% [0.0-6.3] | 56.1% [43.3-68.2] | 63.2% [50.2-74.5] |
| Flywheel | 55 | 1.16 | 0.0% [0.0-6.5] | 0.0% [0.0-6.5] | 0.0% [0.0-6.5] | 3.6% [1.0-12.3] | 100.0% [93.5-100.0] |
| Amazon S3 | 16 | 0.88 | 75.0% [50.5-89.8] | 18.8% [6.6-43.0] | 0.0% [0.0-19.4] | 25.0% [10.2-49.5] | 25.0% [10.2-49.5] |
*HTTP-200ベース(n=4,701)。Wild Apricot(6サイト)とPagely(3サイト)は報告するには小さすぎます。平均採用指数の区間は読みやすさのために省略されています。†最終ルーブリック(X-Frame-Options重複正規化とCOOP再実行)の下で再計算されました。これらのセルは以前のドラフトから移動しました。Cloudflare-edgeは新しい行です。以前のドラフトではラベルなしでした。
すべてのShopifyラベル付きサイトは、認識されたクリックジャッキングヘッダーとnosniffを持っていましたが、調査定義の強力なHSTSは満たしていませんでした。すべてのGoDaddyビルダーサイトは強力なHSTSを満たし、認識されたクリックジャッキングヘッダーを持っていましたが、nosniffはありませんでした。Apache、nginx、またはIISとラベル付けされたサイトは、採用指数で平均0.58から1.80、7つのクライテリアのいずれも満たさない割合は49.8%から72.1%でした。Cloudflare-edgeサイトは平均1.72で、59.6%が7つのうちのいずれも満たしていません。
当社のヘッダーのみのスクリプト-CSPルールをパスしたポリシーは、すべてのラベルの下でまれです。8つのうち、3つはCloudflare-edge、2つはnginx、1つはApache、1つはIISで、1つはラベルがありません。Shopify、GoDaddyビルダー、Wix、Squarespaceサイトにはありません。
ビジネスの種類別
ディレクトリカテゴリは、サンプルをビジネスの種類別に分割するおおまかな方法を提供します。HTTP-200レスポンスが80以上ある9つのカテゴリを以下に示します。
| セクター(探索的) | n | 平均採用指数(8つ中) | 7つなし | 強力なHSTS | CSP適用 | クリックジャッキング(認識された値) | nosniff |
|---|---|---|---|---|---|---|---|
| ショッピング | 372 | 2.11† | 35.5% [30.8-40.5]† | 12.1% [9.2-15.8] | 33.3% [28.7-38.3] | 48.1% [43.1-53.2]† | 56.2% [51.1-61.1] |
| レストラン&バー | 408 | 2.07† | 46.1% [41.3-50.9] | 11.3% [8.6-14.7] | 23.3% [19.4-27.6] | 31.1% [26.8-35.8]† | 45.6% [40.8-50.4] |
| 一般 | 1,620 | 1.82† | 48.9% [46.5-51.3]† | 12.8% [11.3-14.6] | 21.5% [19.6-23.6] | 32.5% [30.3-34.9]† | 39.9% [37.6-42.3] |
| コンピューター&インターネット | 226 | 1.81† | 58.0% [51.4-64.2] | 15.5% [11.4-20.8] | 20.8% [16.0-26.6] | 30.5% [24.9-36.8]† | 33.6% [27.8-40.0] |
| 自動車 | 175 | 1.73† | 54.3% [46.9-61.5] | 11.4% [7.5-17.0] | 21.7% [16.2-28.4] | 36.0% [29.3-43.3]† | 32.0% [25.5-39.2] |
| 産業 | 169 | 1.72† | 50.3% [42.8-57.7]† | 12.4% [8.3-18.2] | 20.1% [14.8-26.8] | 32.5% [25.9-39.9]† | 37.3% [30.3-44.8] |
| 法務サービス | 194 | 1.69† | 59.3% [52.2-65.9] | 13.4% [9.3-18.9] | 17.5% [12.8-23.5] | 27.3% [21.5-34.0]† | 32.0% [25.8-38.8] |
| 建設&メンテナンス | 368 | 1.67† | 51.6% [46.5-56.7]† | 10.3% [7.6-13.9] | 14.9% [11.7-18.9] | 25.3% [21.1-30.0]† | 39.1% [34.3-44.2] |
| 不動産 | 541 | 1.49† | 56.2% [52.0-60.3]† | 11.5% [9.0-14.4] | 18.7% [15.6-22.2] | 22.6% [19.2-26.3]† | 32.2% [28.4-36.2] |
*HTTP-200ベース(n=4,701)。80未満のレスポンスのカテゴリは除外されています。平均採用指数の区間は読みやすさのために省略されています。†最終ルーブリックの下で再計算されました。これらのセルは以前のドラフトから移動しました。
ここでも同じ多重度に関する注意が適用されます。ショッピングは、7つ未満のシェアが最も低いカテゴリです。7つのクライテリアのいずれも満たさないのは35.5%で、不動産の56.2%と比較されます。これは記述的で探索的なギャップです。ショッピングは、認識されたクリックジャッキングヘッダー(48.1%)、nosniff(56.2%)、および適用されたCSP(33.3%)でもリードしています。これは上記のラベルの絵に合っています。ホストされたショップビルダーはそれらのヘッダーをシップする傾向があるためです。しかし、この表は理由を教えてくれません。
不動産は、観測された平均指数(8つ中1.49)が最も低いです。クリックジャッキング率(22.6%)も最も低いです。
CSP列には、前述と同じ警告が必要です。適用されたCSPはどこにでも表示されますが、主要なベース全体で当社のヘッダーのみのスクリプト-CSPルールをパスしたのはわずか8つのポリシーでした。セクター固有のカウントは解釈するには小さすぎました。
認識された非デフォルトCOOP値は、セクターごとに比較するにはまれすぎます。唯一の例外はレストランとバーで4.4% [2.8-6.9] ですが、それもプラットフォームのデフォルトから来ているようです。
靴屋の子供たち
そして、私たちが半分恐れていた行があります。
コンピューター&インターネットは、Curlieカテゴリの中でテクノロジーに関するリストです。そこにリストされているサイトの58.0% [51.4-64.2] が、7つのクライテリアのいずれも満たしていません。これは、法務サービスの59.3%に次いで、どのカテゴリでも2番目に高いシェアです。それらの強力なHSTS率は15.5%で、テーブルで最高ですが、わずかに高く、区間は重複しています。
Curlieのコンピューター&インターネットカテゴリにリストされているサイトは、ヘッダークライテリアの達成度が高くありませんでした。カテゴリメンバーシップは、ビジネスのサービスやスタッフの専門知識を確立するものではありません。区間も広く、テーブルのほとんどと重複しています。
州別
結果を州別に分割しました。9つの州には、それぞれ170から570のHTTP-200レスポンスがあり、7つのクライテリアのいずれも満たさない割合は、ニューヨークの42.9% [36.0-50.0] からフロリダの56.2% [49.2-63.0] の範囲でした。州の推定値は記述的に変動しました。州の比較のためにこの研究を事前に指定したり、パワーをかけたりしておらず、多重度調整された州のテストを実施していないため、州をランク付けしたり、州レベルの違いを推測したりしません。9x2テーブル(州対7つなし)のピアソンカイ二乗検定では、検出可能な異質性は見つかりませんでした(カイ二乗8.77、自由度8、p = 0.36。州ごとのカウント https://rackcrunch.com/security-headers-2026/files/state-counts-2026-09-24.tsv (state-counts-2026-09-24.tsv, 2 KB, SHA-256 f757ac8d93c5f3c51060202ce51393315f5cb1b8e65fb209d6da899b2d16b03f) は再実行するのに十分です)。調整されていないニューヨークとフロリダの違いは、36の可能なペアの補正を生き残っていません。このテストの背後にある州レベルのカウントは、リリースされた分析出力にあります。
すべての下にある床
もう1つの数字があり、それはすべての下にあります。
サンプリングされた7,040行のうち1,398行、19.9% [18.9-20.8] は、使用可能なHTTPSレスポンスをまったく提供しませんでした。737はTLSまたは接続段階で失敗しました。215はプレーンHTTPにリダイレクトしました。204はタイムアウトし、192はDNSが解決しませんでした。残りはリダイレクトループ、DNSエラー、および少数の奇妙なケースでした。
それはそれ自身の問題であり、ヘッダーではなく可用性とTLSに関するものです。スキャナーがそこまで到達しなかったため、それらのサイトのヘッダー姿勢について何も言うことはできません。言えることは、約5行に1行で、スキャナーは当社のスキャンルールで、使用可能なHTTPSレスポンスを取得できなかったということです。
サイトオーナーができること、順序通り
修正はほとんどが短いです。すべてがリスクフリーではありません。段階的に展開し、テストしながら進めてください。
- HSTSを段階的に展開します。 短いmax-ageから始め、影響を受けるすべてのサービスを確認してから、長い期間に向けて増やします。すべての現在のおよび予想されるサブドメインがHTTPSをサポートしていることを確認した後のみincludeSubDomainsを追加してください。ブラウザは、そうでないサブドメインへのプレーンHTTP接続を拒否するためです。要件を満たし、運用上の結果を受け入れた後にのみプリロードを検討してください。ベアドメインとwwwの両方にヘッダーを設定します。
- クリックジャッキング保護を追加します。 X-Frame-Options: SAMEORIGIN、またはCSP frame-ancestors 'self'。まず、正当なものがページを埋め込んでいないか確認します(予約ウィジェット、パートナーサイト、独自のアプリ)。これはそれらを壊します。
- X-Content-Type-Options: nosniffを追加します。 1行で、一般的にリスクは低いですが、MIME依存のダウンロードとレガシー動作をテストしてください。
- Referrer-Policyを確認します。 それが欠落している場合、ブラウザのデフォルトは妥当です。no-referrer-when-downgradeのようなレガシー値に設定されている場合は、strict-origin-when-cross-originに変更してください。
- サーバーソフトウェアをパッチします。 Server、X-Powered-By、およびASP.NETバージョンヘッダーからバージョン番号を削除することは、低度のクリーンアップです。問題を隠すだけで、修正しません。ソフトウェアを最新の状態に保つことがより重要です。
- report-onlyモードでContent-Security-Policyを開始します。 次に、テスト後にnonceまたはハッシュベースのstrict CSPに向けて移動します。Strict-CSPガイダンスはobject-src 'none'とbase-uri 'none'も推奨していますが、これは私たちのルーブリックでは要求されていません。そのため、当社のルールをパスすることは、本番品質のstrict CSPと同じではありません。当社のルールをパスした8つのヘッダーセットは、実装品質またはnonceの鮮度を確立するものではありません。
- Cross-Origin-Opener-Policyには注意してください。 same-originはポップアップサインインや支払いフローを壊す可能性があります。有効にする前にそれらをテストしてください。
ホストされたプラットフォームでは、この一部はすでに完了しており、一部は完了していません。プラットフォームがどのヘッダーを省略しているか確認してください。
測定方法
母集団。 Curlieスナップショットの米国ローカル「ビジネスと経済」カテゴリにリストされているドメイン(2026-02-02付のcurlie-rdf-all.tar.gzアーカイブ内のファイル、2026-09-24にhttps://curlie.org/downloadからダウンロード):110,444ユニークドメイン。政府、医療、教育、金融サービス、軍事をカバーするカテゴリは除外されました。リストディレクトリやソーシャルプラットフォームも除外されました。ビジネスの規模は検証されていません。Curlieは人間が編集し、デッドリンクのクリーンアップを実行するため、プールは確立されたビジネスと維持されているリストに偏っています。
サンプル。 固定シードでランダムに抽出された7,040行。これらは7,022のユニークな初期登録可能ドメインをカバーしています。18行は他の行と初期登録可能ドメインを共有していました。
スキャン。 各サンプリングされたURLに対して2回のHTTPSリクエストチェーンスキャンを実行し、最大3つのリダイレクトを追跡しました。報告されているすべての推定値は2回目のスキャンからのものです。方法:HTTPS GET。レスポンスボディは決して読み取られず、レスポンスヘッダーの後に接続は閉じられました。TLS検証はオンであり、公開IPアドレスのみが連絡されました。タイムアウトはDNSで3秒、ホップごとに3秒、合計8秒で、24の同時ワーカーを使用しました。スキャナーはRACKCRUNCH-header-check/1.0として、オプトアウト用の連絡先URLとともに自己識別しました。スキャンはGoogle Cloud(オレゴン州、米国)で2026-09-24の12:26-12:31 EDT(初回)および13:16-13:21 EDT(2回目)に実行されました。スキャン2のリクエストで最終HTTPレスポンスが生成された場合、スキャナーは内部に完全な最終レスポンスヘッダーブロックを保持しました(測定倫理とデータリリースを参照)。
スキャン間のドリフト。 サンプリングされた7,040すべてのURLが両方のスキャンでスキャンされました。初回スキャンから2回目へのステータントランジション:
| 初回スキャン -> 2回目スキャン | サンプリングされた行数 |
|---|---|
| 200 -> 200 | 4,608 |
| 200 -> 200以外 | 65 |
| 200以外 -> 200 | 93 |
| 使用不可 -> 使用不可 | 1,348 |
| 403 -> 403 | 574 |
| 202 -> 202 | 229 |
| 404 -> 404 | 59 |
| その他のすべてのトランジション(それぞれ20未満) | 64 |
初回スキャンでは、400文字に切り捨てられたチェックごとの値のみが記録されたため、最終ルーブリックの下での完全な比較は不可能です。サンプリングされた7,040行のうち、両方のスキャンでHTTP-200を返したのは4,608行でした。元のルーブリックの下では、それらの行のうち13行(0.28%)が少なくとも1つのチェックを変更し、スキャン間の見出し普及率の最大の変更は0.25ポイントでした(X-Content-Type-Options、all-usableベース)。これらは古いルーブリックの診断であり、修正された分類が安定している証拠ではありません。境界チェックとして、スキャン1のチェック値が完了していたそれらの行のうち4,484行(97.3%)に最終ルーブリックを適用しました。7行が少なくとも1つのインデックス項目を変更しました(0.16% [0.08-0.32]):クリックジャッキング2、Permissions-Policy 3、X-Content-Type-Options 3、バージョン衛生2(一部の行は複数の項目を変更しました)。除外された124行は最も長いCSPを持つ行であり、これは短期的な安定性をサポートしますが、それを証明するものではありません。
処理。 5,642の使用可能なHTTPSレスポンス:ステータス200:4,701;403:577;202:245;404:59;500:11;307:9;429:8;401:5;503:4;405:4;520:3;526:3;400:3;406:2;521:2;502、525、410、423、523、530:それぞれ1。1,398の使用不可(各失敗カテゴリはデータ辞書で定義されています):TLSまたは接続失敗737、非HTTPSへのリダイレクト215、タイムアウト204、DNS解決せず192、リダイレクト過多29、DNSルックアップ失敗13、非公開アドレス4、無効なリダイレクト4。HTTPステータス202が返されたレスポンス(245レスポンス)は、多くの場合ボット保護レイヤーによって生成されましたが、到達可能と分類され、HTTP-200分析から除外されました。
重複と駐車ページ。 使用可能なレスポンスは5,614のユニークな最終登録可能ドメインに解決されました。HTTP-200レスポンスは4,688に解決され、これが主要なベースです。使用可能なレスポンスのうち、15の最終登録可能ドメインのみが複数のサンプリング行から到達しました(合計43レスポンス、1つの最終登録可能ドメインあたり最大9)。重複排除は推定値を0.3ポイント以下移動させます。9つのHTTP-200レスポンス(0.19%)は、駐車された、期限切れのドメイン、またはプラットフォームページに到達しました。これらは、ページコンテンツではなく、リダイレクト後の最終ホスト名(例:expireddomains.comまたはforsale.godaddy.com)から特定されました。スキャナーが受信したヘッダーであるため、これらはベースに残ります。
区間。 全体にわたってウィルソン95%信頼区間(Wilson, 1927)を使用します。ランダムな描画はディレクトリ行に対して行われ、主要なベースはリダイレクト後のユニークな最終登録可能ドメインであるため、そのベースの区間は近似値です。これらは、フレームバイアス、パーサーの誤分類、CDNの変動、または選択的なプラットフォームの属性ではなく、指定されたサンプルモデルの下でのサンプリングの不確実性を定量化します。ラベル、セクター、州のカットは探索的です。
ルーブリック
このレポートで使用されている明示的ヘッダー採用指数の8つのクライテリア。完全なルーブリックコードは再現パック(repro-pack-2026-09-24-v2.5.1.tar.gz, 239 KB, SHA-256 9e00c1a41ac412f3354eecb4686ba929aeaed359ad2e859e52c312e51cfd30b3)にあり、受け入れられた、弱い、不正形式の、no-opの値はすべてデータ辞書(data-dictionary.md, 7 KB, SHA-256 76469bc6e27a98df28c9a422c15da1a2b56d2bf05a22c7be08bbf6737177f6a2)で定義されています。
| アイテム | パス条件 |
|---|---|
| HSTS(調査定義の強力なもの) | 最終レスポンスホストで、1年以上のmax-ageとincludeSubDomains。これはベアドメインまたは兄弟ホストがカバーされていることを示しません。 |
| Content-Security-Policy | 当社のヘッダーのみのスクリプト-CSPルールをパスする。3つのスクリプトチャネルを評価します:スクリプト要素(script-src-elem、次にscript-src、次にdefault-src)、インラインイベントハンドラ(script-src-attr、次にscript-src、次にdefault-src)、およびeval(script-src、次にdefault-src)。サイトは、ブラウザが行うように評価されたすべての適用されたポリシー全体で、どのチャネルも'unsafe-inline'、'unsafe-eval'、ベア*、またはベアスキームソースを許可しない場合にパスします。'unsafe-inline'の隣にあるnonceまたはhashは無視され、ホストソース、'self'、およびnonceまたはhashと一緒のstrict-dynamicの隣にある'unsafe-inline'も無視されます。重複ディレクティブ:最初のものが勝ちます。サブドメインワイルドカードは報告されますが、失敗しません。ルールはヘッダーのみを読み取ります:nonceの鮮度、マークアップの一致、または許可リストのバイパスはテストせず、object-srcまたはbase-uriは要求しません。 |
| クリックジャッキング | 適用されたCSP frame-ancestorsディレクティブが存在する場合、結果を決定します。適用されたframe-ancestorsがない場合のみX-Frame-Optionsが使用されます。当社のスキャナーは重複したヘッダーフィールドをカンマで結合するため、SAMEORIGINを2回送信したサイトは「SAMEORIGIN, SAMEORIGIN」として記録されました。同一の繰り返しを単一の値として扱います。競合する繰り返しと廃止されたALLOW-FROMは無効と見なされます。 |
| X-Content-Type-Options | nosniff |
| Referrer-Policy | セキュアな値が設定されている(欠落=ブラウザデフォルト、失敗ではないがポイントなし;レガシー値=弱い;認識されない値=無効) |
| Permissions-Policy | 明示的な非ワイルドカード宣言:許可リストがベアではないディレクティブ(例:camera=()またはgeolocation=(self))。すべてのディレクティブがであるポリシーはカウントされません。ルールは宣言された許可リストと機能のブラウザデフォルトを比較しないため、ディレクティブは単にデフォルトを繰り返すだけかもしれません。 |
| Cross-Origin-Opener-Policy | 当社のルーブリックの下で認識された非デフォルトCOOP値:same-origin、same-origin-allow-popups、noopener-allow-popups、またはrestrict-properties(後者はブラウザで出荷されなかった提案でした;後者の2つはデータに現れませんでした)。「;」の後のパラメータは無視されます。unsafe-noneはカウントされません。未知のトークンライクな値は不正形式のものとは別に報告されます。スペースバリアント「same-origin allow-popups」(ブラウザは無視します)は不正形式です。 |
| バージョン衛生(低度) | Server、X-Powered-By、X-AspNet-Version、またはX-AspNetMvc-Versionのいずれにも数字がない。任意の数字(日付や製品名の数字を含む)がカウントされます。数字のないバナーはパスします。 |
「7つなし」の見出しは、最初の7つのアイテムを使用し、バージョン衛生を除外します。
ホスティングラベル。 ルールはこの順序でチェックされ、最初に一致したものが勝ちます。マッチングは大文字と小文字を区別します。
- GoDaddy builder: CSPに「godaddy.com」が含まれるか、Serverが「DPS」で始まる
- Flywheel: Serverが「Flywheel」で始まる
- Pagely: Serverが「Pagely」で始まる
- Shopify: CSPが正確に「block-all-mixed-content; frame-ancestors 'none'; upgrade-insecure-requests」で始まる
- Wild Apricot: CSPに「wildapricot」が含まれる
- Cloudflare-edge: Serverが正確に「cloudflare」である
- Microsoft IIS: Serverが「Microsoft-IIS」で始まる
- Apache: Serverが「Apache」で始まる
- nginx: Serverが「nginx」で始まる
- OpenResty: Serverが「openresty」で始まる
- Amazon S3: Serverが「AmazonS3」で始まる
それ以外はラベルなしです。
注意事項
- 1ページ、1つの瞬間。ヘッダーはページ、CDNエッジ、またはログイン状態によって異なる場合があります。ホームページのみを読み取りました。
- CDNまたはホストされたプラットフォームの背後にあるサイトは、所有者の設定ではなく、プラットフォームのヘッダーを表示することがよくあります。これはサイトにとって実際の保護であり、一部のパスは継承されることを意味します。
- http://からhttps://へのリダイレクトはテストしていません。当社のチェッカーはテストしますが、これらのスキャンはサイトごとに1つのリクエストチェーンを追跡しました。
- サンプルは人間が編集したディレクトリから来ています。確立されてリストされているビジネスに偏っており、ビジネスの規模は検証されていません。
- ラベルは、ヘッダーでサーバーまたはホスティングプラットフォームを識別したHTTP-200レスポンスの74.0%をカバーしています。比較はそれらのサイトを記述しています。プラットフォームが何を引き起こすかを推定するものではありません。
- クリックジャッキングの数値には116サイトが含まれています。これは、重複するX-Frame-Options値を、スキャナーによって結合された単一の値として扱うためです(ルーブリックを参照)。現在のHTML処理モデルでは、SAMEORIGIN, SAMEORIGINのような同一の繰り返し値はsame-originフレーミング保護を維持します。古いブラウザ実装では異なっていました。それらを無効とカウントすると、1,347(28.7%)になります。
- これは軽いスキャンであり、個々のビジネスのセキュリティ監査ではありません。
感度分析
すべての使用可能なレスポンス。 エラーページやボットチャレンジページを含む、すべての使用可能なHTTPSレスポンス(n=5,642)。このベースでは、48.4% [47.1-49.7] が7つのクライテリアのいずれも満たしていません(5,642中2,733)。
| コントロール(すべての使用可能なレスポンス、n=5,642) | サイト数 | 割合 | 95% CI |
|---|---|---|---|
| HSTSあり | 2,233 | 39.6% | 38.3-40.9 |
| HSTSは1年以上 | 1,449 | 25.7% | 24.6-26.8 |
| 強力なHSTS:1年以上 + includeSubDomains(最終ホスト) | 609 | 10.8% | 10.0-11.6 |
| HSTSは1年未満 | 784 | 13.9% | 13.0-14.8 |
| CSP適用 | 1,341 | 23.8% | 22.7-24.9 |
| CSPレポートのみ | 43 | 0.8% | 0.6-1.0 |
| CSPがスクリプトを制限 | 510 | 9.0% | 8.3-9.8 |
| 当社のヘッダーのみのスクリプト-CSPルールをパス | 8 | 0.14% | 0.1-0.3 |
| クリックジャッキング(認識された値) | 1,955 | 34.7% | 33.4-35.9 |
| X-Content-Type-Options: nosniff | 2,263 | 40.1% | 38.8-41.4 |
| Referrer-Policyセキュア | 853 | 15.1% | 14.2-16.1 |
| Referrer-Policy弱い(レガシー値) | 254 | 4.5% | 4.0-5.1 |
| Referrer-Policy無効(認識されない値) | 1 | 0.02% | 0.0-0.1 |
| Referrer-Policy欠落(ブラウザデフォルト適用) | 4,534 | 80.4% | - |
| 明示的な非ワイルドカード Permissions-Policy宣言 | 701 | 12.4% | 11.6-13.3 |
| Permissions-Policyワイルドカードのみ | 10 | 0.2% | 0.1-0.3 |
| COOP same-origin | 352 | 6.2% | 5.6-6.9 |
| COOP same-origin-allow-popups | 19 | 0.3% | 0.2-0.5 |
| 認識された非デフォルトCOOP値(いずれか) | 371 | 6.6% | 6.0-7.3 |
| COOP no-op (unsafe-none) | 20 | 0.4% | 0.2-0.5 |
| COOP不正形式 | 4 | 0.07% | 0.0-0.2 |
| バージョン・トークン開示 | 976 | 17.3% | 16.4-18.4 |
ここでのCOOPとCSPの数値には注意が必要です。352のsame-origin COOP値のほとんどはCDNチャレンジページから来ており、CSPも同様です。これらのベースの325の使用可能なレスポンス(5.8%)は、nonce/hash-strict CSPを搭載していますが、これらはサイトによる展開ではなく、ほとんどがCDNボットチャレンジのインターロジック(Cloudflareチャレンジページはnonce CSPを搭載しています)です。このベースのscript-src-attrの使用318のうち316は、それらのCloudflareレスポンスにあります。このクラスは、主要ベースでは5サイトです。残りのミックスは、CSPなし4,301(76.2%)、スクリプトディレクティブなし829(14.7%)、許可リストベース177(3.1%)、strict-dynamicとアンカー付き8(0.1%)、無効2です。
ベース比較。 3つのベースすべてでの同じ測定値:
| 測定項目 | すべての使用可能(5,642) | HTTP-200(4,701) | ユニークHTTP-200、主要(4,688) |
|---|---|---|---|
| 7つなし | 48.4% | 49.7% | 49.7% |
| HSTSあり | 39.6% | 43.8% | 43.8% |
| 強力なHSTS | 10.8% | 12.4% | 12.3% |
| CSP適用 | 23.8% | 21.3% | 21.2% |
| CSPがスクリプトを制限 | 9.0% | 4.1% | 4.0% |
| 当社のヘッダーのみのスクリプト-CSPルールをパス | 0.14% | 0.17% | 0.17% |
| クリックジャッキング(認識された値) | 34.7% | 31.3% | 31.2% |
| nosniff | 40.1% | 39.8% | 39.7% |
| Referrer-Policyセキュア | 15.1% | 8.0% | 8.0% |
| 明示的な非ワイルドカード Permissions-Policy宣言 | 12.4% | 8.0% | 8.0% |
| 認識された非デフォルトCOOP値 | 6.6% | 1.1% | 1.1% |
| バージョン・トークン開示 | 17.3% | 20.5% | 20.5% |
COOPはHTTP-200ベースで6.6%から1.1%に低下し、これはほとんどの識別されたチャレンジレスポンスを除外します。Referrer-PolicyとPermissions-Policyは約3分の1低下します。重複排除はほとんど何も移動させません。7つなしのシェアは、3つのベースすべてで約半分です。
測定倫理とデータリリース
公開されているHTTPSのホームページのみをスキャンしました。サンプリングされたURLごとに1つのリクエストチェーンをスキャンし、最大3つのリダイレクトを追跡しました。ページ本文を読んだり、フォームを送信したり、ログインしたり、脆弱性をプローブしたりすることはありませんでした。スキャナーは公開IPアドレスのみに連絡し、スキャン全体で最大24の同時接続を短いタイムアウトで使用し、RACKCRUNCH-header-check/1.0として連絡先URLをオプトアウト用に提示しました。これまでのところ、オプトアウト要求は受けていません。
最終HTTPレスポンスを生成したスキャン2のリクエストごとに、スキャナーは内部に完全な最終レスポンスヘッダーブロックを保持しました。唯一の制限は、キャプチャ時および分類前のブロック全体に対する65,536バイトのキャップでした。キャプチャされた最大のブロックは15,362バイトであったため、スキャン2の最終レスポンスヘッダーブロックはキャプチャサイズキャップによって切り捨てられませんでした。リダイレクトホップからのヘッダーは保持されませんでした。初回スキャンでは、分類後の400文字に切り捨てられたチェックごとの値のみが保持されました。そのため、スキャン間のドリフトは境界付けられるだけです。リリースされたデータセットはクラスラベルのみを運び、ヘッダー値は運ばないため、読者はこのレポートのすべての数値を再計算できますが、ヘッダーを再評価することはできません。スキャンはCookieが送信されない認証されていないGETリクエストであったため、データは訪問者のブラウザが受信するものを超えるものは何も保持しません。
リリースされたデータセット(scan2-2026-09-24-deidentified.jsonl, 4.1 MB, SHA-256 329a1a910b4ae4b005fdd864fe9b5370df7e30bf01fc14b790baf7664d00428d)には、7,040のサンプリングされた行それぞれに正確に1つの行があり、それ以上はありません。使用可能なレスポンスがない行は、エラークラスとHTTPステータスのみを運びます。各行には、セクター、状態、レスポンスが使用可能であったか、エラークラス、HTTPステータス、リダイレクト数、各グレーディングヘッダー(HSTS、CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、COOP、およびバージョン・トークン開示)のクラスラベル、および基準ごとの結果が記載されています。ヘッダー値、スキャン時間、または生のヘッダーマップは含まれていないため、Cookie、CSP nonce、レポートエンドポイント、またはバージョン文字列は当社の側から漏洩しません。
データセットは匿名化されています。すべてのビジネスは、安定した仮名IDの下にのみ表示され、このレポートもデータセットも、弱いまたは欠落したヘッダーを持つサイトを名前で挙げていません。このレベルを選択したのは、調査のポイントは全体像であり、弱いヘッダーを持つ小規模ビジネスを名前で挙げることは、その全体像をより明確にすることなく、それらにリスクを追加するためです。あなたのビジネスがサンプルに含まれていると思われる場合は、無料のRACKCRUNCHセキュリティヘッダーチェッカー(rackcrunch.com/security-headers)で独自のドメインを実行して、スキャナーが見たものを確認してください。特定のドメインの行は、そのドメインの検証済み所有者にのみ確認します。
技術ソース
- Content Security Policy Level 3 (W3C): https://www.w3.org/TR/CSP3/
- Strict CSPガイダンス: https://csp.withgoogle.com/docs/strict-csp.html および https://web.dev/articles/strict-csp
- Weichselbaum et al., "CSP Is Dead, Long Live CSP! On the Insecurity of Whitelists and the Future of Content Security Policy", ACM CCS 2016: https://doi.org/10.1145/2976749.2978363
- MDN, Content-Security-Policy:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy - MDN, script-src-attr:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy/script-src-attr - MDN, Strict-Transport-Security:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security - MDN, Referrer-Policy:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Referrer-Policy - MDN, Permissions-Policy:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Permissions-Policy - Permissions Policy (W3C): https://www.w3.org/TR/permissions-policy/
- MDN, Cross-Origin-Opener-Policy:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Opener-Policy - MDN, X-Frame-Options:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/X-Frame-Options - OWASP HTTP Headers Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html
- OWASP Content Security Policy Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html
- Curlie directory license: https://curlie.org/docs/en/license.html
- Wilson, E. B. (1927). "Probable Inference, the Law of Succession, and Statistical Inference." Journal of the American Statistical Association 22(158): 209-212. https://doi.org/10.1080/01621459.1927.10502953
データと再現性
このレポートの背後にあるすべてが公開されています。匿名化されたデータセットには、サンプリングされたホームページ7,040それぞれに1つの行があり、データ辞書はそれに含まれるすべてのフィールドと値を説明しています。再現パックには、データセット、サンプリング、スキャン、分析スクリプト(ランダムシード付き)、ルーブリック、CSPパーサー、およびテストが含まれています。そのREADME(README-2026-09-24-v2.5.1.md, 7 KB, SHA-256 6fa74c65096a2981f784d2f7c0b168e90e66c91272f0768042af9d3454415c7c)は各ステップを説明し、再実行できないものをリストしています。同じファイルがgit bundle(repro-pack-2026-09-24-v2.5.1.bundle, 238 KB, SHA-256 250306e16e674c9e7e95c5f913ca2016fa63d39fb07a3350d5c436575bf7d303)としても利用可能で、タグはrelease-2026-09-24-5-1 (commit f96a488c7922df11ca0c83e78f0ef739f7ef4bca)です。
1つのコマンドでこのレポートのすべてのテーブルをfinal-tables.md(final-tables.md, 20 KB, SHA-256 07c5a2aea843a4c6ef03c8cfe36848074cb367a724c63c822d8d3f61e422ed90)として再生成できます。
pip install -r requirements.txt && python3 reanalysis4.py data/ final-tables.md
Python標準ライブラリ以外の唯一の依存関係は、requirements.txt(requirements.txt, 1 KB, SHA-256 7d5f5a94ac1690db632a2f6b2e51aaf74a8ba332ee248aa6299ec6e713120946)にピン留めされています。2つのチャートはそれらのテーブルから描画されます。採用指数チャートはセクション3の分布テーブルから、ラベルチャートはセクション13のプラットフォームテーブルから描画されます。個別のチャートコードはありません。パーサーテスト(ゴールデンコーパスを含む)は以下で実行されます。
python3 test_csp3.py && python3 -m unittest test_golden
使用されたソフトウェアバージョン:Python 3.10.12;scipy 1.15.3(要件.txtにピン留め、州のカイ二乗にのみ使用。その他はPython標準ライブラリ)。スキャン自体の再実行はコマンドに含まれていません。ネットワークアクセスとディレクトリのスナップショットが必要であり、結果は時間とともに変化します。
ダウンロードを確認するには、SHA-256(各リンクの後に小さく表示)をLinuxのsha256sum FILEまたはmacOSのshasum -a 256 FILEと比較してください。パック内には、MANIFEST.sha256(MANIFEST.sha256, 1 KB, SHA-256 e6c533998c3675c01fce0c5fe160df6c182c8996a570522a30081be6341bcf3b)があり、すべてのファイルのハッシュがリストされています。それらをすべてsha256sum -c MANIFEST.sha256で確認してください。
再現パック内のファイル
- .gitignore 1 KB, SHA-256
862263fa1f46c20f0d1e4dac5ffcc75abd55c08211b2c3864c5f8764b9d87793 - MANIFEST.sha256 1 KB, SHA-256
e6c533998c3675c01fce0c5fe160df6c182c8996a570522a30081be6341bcf3b - README.md 7 KB, SHA-256
6fa74c65096a2981f784d2f7c0b168e90e66c91272f0768042af9d3454415c7c - csp3.py 10 KB, SHA-256
253713b8ec414ce9d93e6e180254d67c3409ffae5e94d5675315ff0e52eadb1f - data-dictionary.md 7 KB, SHA-256
76469bc6e27a98df28c9a422c15da1a2b56d2bf05a22c7be08bbf6737177f6a2 - data/scan2-2026-09-24-deidentified.jsonl 4.1 MB, SHA-256
329a1a910b4ae4b005fdd864fe9b5370df7e30bf01fc14b790baf7664d00428d - data/state-counts-2026-09-24.tsv 2 KB, SHA-256
f757ac8d93c5f3c51060202ce51393315f5cb1b8e65fb209d6da899b2d16b03f - final-tables.md 20 KB, SHA-256
07c5a2aea843a4c6ef03c8cfe36848074cb367a724c63c822d8d3f61e422ed90 - reanalysis4.py 28 KB, SHA-256
79d759a2372f57b1c15b0e5136d9e3935c6c08fce464106accf13405c0090c16 - requirements.txt 1 KB, SHA-256
7d5f5a94ac1690db632a2f6b2e51aaf74a8ba332ee248aa6299ec6e713120946 - rubric3.py 7 KB, SHA-256
3bc61fc02e75e45a96147907cfc604579c461bc74dadc6e597b13823cf025517 - scripts/build-deidentified-dataset.py 5 KB, SHA-256
3d86b0d84af020d12a3131ceb91a4ae642d85ac9b486cfeebe631640f498e4c6 - scripts/sample-from-curlie.py 3 KB, SHA-256
2c19a1af2c5b1dcb94bb897d28937f1f3c3807b2efae584eae47e5444c60ae16 - scripts/scan.py 9 KB, SHA-256
7ea184650c9373829c51f59bd0144a4f916b33e5f33eb65d5d7c5996d41ed206 - scripts/scan2.py 9 KB, SHA-256
657b04b409926eb1a4f26829e10174927c31be93ef34ae3f60e1a70542bea711 - test_csp3.py 7 KB, SHA-256
f0f94db40395f76460616de801d67f1e852ea67da38a63265d0d1ae80cfc0d4b - test_golden.py 29 KB, SHA-256
d53f3c3b8ba0bdddb7bb7f3cc751ff1a1b89aec8f0d5fa7ae41ebc1f32ebf800
再識別化の注意。 行には、サンプリング行番号とキー付きの仮名のみが含まれ、キーはリリースされていません。しかし、固定シード(42)で同じディレクトリスナップショットに対してサンプリングスクリプトを再実行する人は誰でも、サンプルを再構築し、行をサイトに一致させることができます。これは再現可能なサンプリングで提供されます。リリースではどのサイトも名前で言及されていません。手動監査からの8つの適格なContent-Security-Policyの例は、仮名の下でのみ表示されます。
バージョン履歴と正誤表
- 2026-09-24 (v7.4.2)。 PDFのCOOP注記がこのページと一致するようになりました。数値は変更されていません。
- 2026-09-24 (v7.4.1), pack v2.5.1。 リリースされたフィールドのリストにリダイレクトカウントを追加しました。数値は変更されていません。
- 2026-09-24 (v7.4), pack v2.5。 8つの名前付き適格サイトをデータリリースから削除し、レポートがいずれも名前を挙げていないことを確認したため、匿名化の主張は有効です。数値は変更されていません。
- v7.3, pack v2.4 (2026-09-24)。 分析ベースの名前が、このページ、PDF、README、データ辞書、および生成されたテーブル全体で一貫したものになりました。定義ボックスが追加されました。数値は変更されていません。
- v7.2 (2026-09-24)。 バイラインとPDFタイトルのメタデータが修正されました。数値は変更されていません。
- v7.1 (2026-09-24)。 初公開。
引用方法
RACKCRUNCH Team. Security Headers on Directory-Listed U.S. Local-Business Websites, study version 7.4.2, reproduction pack v2.5.1. RACKCRUNCH, 2026-09-24. https://rackcrunch.com/security-headers-2026
アーティファクトハッシュ
この研究で公開されたすべてのファイルのSHA-256。これらはビルド時に提供される正確なファイルから計算されます。
- MANIFEST.sha256 1 KB, SHA-256
e6c533998c3675c01fce0c5fe160df6c182c8996a570522a30081be6341bcf3b - README-2026-09-24-v2.5.1.md 7 KB, SHA-256
6fa74c65096a2981f784d2f7c0b168e90e66c91272f0768042af9d3454415c7c - data-dictionary.md 7 KB, SHA-256
76469bc6e27a98df28c9a422c15da1a2b56d2bf05a22c7be08bbf6737177f6a2 - final-tables.md 20 KB, SHA-256
07c5a2aea843a4c6ef03c8cfe36848074cb367a724c63c822d8d3f61e422ed90 - repro-pack-2026-09-24-v2.5.1.bundle 238 KB, SHA-256
250306e16e674c9e7e95c5f913ca2016fa63d39fb07a3350d5c436575bf7d303 - repro-pack-2026-09-24-v2.5.1.tar.gz 239 KB, SHA-256
9e00c1a41ac412f3354eecb4686ba929aeaed359ad2e859e52c312e51cfd30b3 - requirements.txt 1 KB, SHA-256
7d5f5a94ac1690db632a2f6b2e51aaf74a8ba332ee248aa6299ec6e713120946 - scan2-2026-09-24-deidentified.jsonl 4.1 MB, SHA-256
329a1a910b4ae4b005fdd864fe9b5370df7e30bf01fc14b790baf7664d00428d - security-headers-study-2026.pdf 400 KB, SHA-256
c8fa6a281799ff1f86c79b62f5ba5b52535a4ca9d9b6bdce69d61f5bfaeb6d91 - state-counts-2026-09-24.tsv 2 KB, SHA-256
f757ac8d93c5f3c51060202ce51393315f5cb1b8e65fb209d6da899b2d16b03f
Curlieディレクトリ(https://curlie.org)からサンプリング。クリエイティブ・コモンズ表示3.0非移植ライセンスの下で使用。サンプリングフレーム:2026-02-02付のcurlie-rdf-all.tar.gzアーカイブ内のファイル、2026-09-24にhttps://curlie.org/downloadからダウンロード。
Curlie.orgからのコンテンツを使用 - 世界最大の人間が編集したウェブディレクトリ。ウェブサイトを送信するか、エディターになることで貢献してください。Curlieデータはクリエイティブ・コモンズ表示3.0非移植ライセンスの下でライセンスされています。
質問とオプトアウト
質問、修正、またはオプトアウトのリクエストについては、hello@rackcrunch.comまでご連絡ください。
注記
-
主要ベース(「dedup-200」):HTTP-200レスポンス中のユニークな最終登録可能ドメイン、ドメインごとに1つのレスポンスを保持(n=4,688)。ラベル、セクター、状態の数値は、ラベル付けされたすべての4,701のHTTP-200レスポンスを使用します。すべての使用可能な結果(n=5,642)は感度分析にあります。
-
7つのクライテリアは、HSTS、CSP、クリックジャッキング、nosniff、Referrer-Policy、Permissions-Policy、およびCOOPであり、ルーブリックセクションの修正ルーブリックの下でグレーディングされています。最初のドラフトでは、1つのCSPディレクティブを二重カウントした以前のルーブリックの下で47.7%を報告しました。修正された数値はわずかに高くなっています。
-
主要ベース。ランキングは正確な文字列を使用するため、末尾の文字がポリシーを分割します。セミコロン付きの
upgrade-insecure-requests;は4位で89サイトです。そのようなバリアントをマージすると、ベアなupgrade-insecure-requestsは219で1位、frame-ancestors 'self'は197で2位になります。