Oh MyUtils

HTTPヘッダー解析ツール - セキュリティヘッダー解析・監査 オンライン

HTTPヘッダーを解析し、セキュリティ脆弱性、キャッシュ動作、CORS設定を監査します。実行可能な推奨事項付きのセキュリティスコアを取得 — 100%クライアントサイド、サーバーへのデータ送信なし。

100%クライアントサイド — データはサーバーに送信されません
ヘッダータイプ
生のヘッダー

よくある質問

HTTPヘッダー解析ツールとは何ですか?

HTTPヘッダー解析ツールは、生のHTTPヘッダー(リクエストとレスポンスの両方)を解析し、各ヘッダーについて人間が読める説明を提供するツールです。ヘッダーを機能別(セキュリティ、キャッシュ、CORS、コンテンツなど)に分類し、Content-Security-Policy、Strict-Transport-Security、X-Frame-Optionsなどの重要なセキュリティヘッダーの存在と正確性をチェックするセキュリティ監査を実行し、セキュリティスコアを生成します。

このツールはどのように使いますか?

1. ブラウザのDevTools(ネットワークタブでリクエストをクリックしてヘッダーを表示)、curl -vの出力、またはサーバーログからHTTPヘッダーをコピーします。2. テキストエリアに生のヘッダーを貼り付けます。3. リクエストヘッダーまたはレスポンスヘッダーを選択します。4. 解析済みヘッダータブで結果を確認します。5. セキュリティ監査タブでスコアを確認します。

データは安全ですか?サーバーに送信されますか?

完全に安全です。このツールはクライアントサイドJavaScriptを使用して100%ブラウザ内で実行されます。ヘッダー、URL、その他のデータがサーバーに送信されることはありません。すべての解析はブラウザ内でローカルに行われます。

すべてのウェブサイトに必要なセキュリティヘッダーは何ですか?

すべてのウェブサイトは以下の重要なセキュリティヘッダーを実装すべきです:(1) HTTPSを強制するStrict-Transport-Security (HSTS)。(2) XSSを防止するContent-Security-Policy (CSP)。(3) X-Content-Type-Options: nosniff。(4) クリックジャッキングを防止するX-Frame-Options: DENY。(5) Referrer-Policy。(6) Permissions-Policy。

Content-Security-Policy (CSP)とは何ですか?

Content-Security-Policyは、ページで読み込み可能なコンテンツのソースをブラウザに指示するHTTPレスポンスヘッダーです。クロスサイトスクリプティング(XSS)攻撃に対する最も強力な防御手段の一つです。CSPはdefault-src、script-src、style-srcなどのディレクティブを使用して特定のオリジンを許可します。

セキュリティスコアはどのように計算されますか?

セキュリティスコアは、重要なセキュリティヘッダーの存在と設定品質に基づく0-100の数値評価です。HSTS(15点)、CSP(20点)、X-Frame-Options(10点)、X-Content-Type-Options(10点)、Referrer-Policy(10点)、Permissions-Policy(10点)、COOP(5点)、CORP(5点)、COEP(5点)、バージョン漏洩ヘッダーの不在(10点)。

リクエストヘッダーとレスポンスヘッダーの違いは何ですか?

リクエストヘッダーはクライアント(ブラウザ)からサーバーに送信され、User-Agent、Accept、Authorization、Cookieなどの情報を含みます。レスポンスヘッダーはサーバーからクライアントに送信され、Content-Type、Cache-Control、セキュリティヘッダー、Set-Cookie、CORSヘッダーを含みます。セキュリティ監査は主にレスポンスヘッダーに適用されます。

コード例

// HTTP Header Parser and Security Analyzer

function parseHttpHeaders(rawHeaders) {
  const headers = [];
  for (const line of rawHeaders.split('\n')) {
    let cleaned = line.trim();
    if (!cleaned) continue;
    if (/^HTTP\/[\d.]+\s+\d+/.test(cleaned)) continue;
    if (/^(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)\s+/.test(cleaned)) continue;
    cleaned = cleaned.replace(/^[<>]\s*/, '');
    if (!cleaned) continue;
    const i = cleaned.indexOf(':');
    if (i === -1) continue;
    const name = cleaned.substring(0, i).trim();
    const value = cleaned.substring(i + 1).trim();
    if (name) headers.push({ name, value });
  }
  return headers;
}

const SECURITY_CHECKS = [
  { header: 'strict-transport-security', label: 'HSTS', weight: 15 },
  { header: 'content-security-policy', label: 'CSP', weight: 20 },
  { header: 'x-frame-options', label: 'X-Frame-Options', weight: 10 },
  { header: 'x-content-type-options', label: 'X-Content-Type-Options', weight: 10 },
  { header: 'referrer-policy', label: 'Referrer-Policy', weight: 10 },
  { header: 'permissions-policy', label: 'Permissions-Policy', weight: 10 },
];

function auditSecurity(headers) {
  const map = new Map(headers.map(h => [h.name.toLowerCase(), h.value]));
  let score = 0;
  const results = [];
  for (const check of SECURITY_CHECKS) {
    const value = map.get(check.header);
    if (value) {
      score += check.weight;
      results.push({ header: check.label, status: 'pass', value });
    } else {
      results.push({ header: check.label, status: 'fail', value: null });
    }
  }
  // Check info leakage
  if (!['server', 'x-powered-by'].some(h => map.has(h))) score += 10;
  const grade = score >= 95 ? 'A+' : score >= 85 ? 'A' :
    score >= 75 ? 'B' : score >= 60 ? 'C' : score >= 40 ? 'D' : 'F';
  return { score, grade, results };
}

// Example usage
const raw = `Content-Type: text/html\nStrict-Transport-Security: max-age=31536000\nX-Frame-Options: DENY\nX-Content-Type-Options: nosniff`;
const parsed = parseHttpHeaders(raw);
const audit = auditSecurity(parsed);
console.log(`Score: ${audit.score}/100 (${audit.grade})`);

関連ツール