HTTP头部分析器 - 安全头部解析与审计 在线工具
解析和审计HTTP头部的安全漏洞、缓存行为和CORS配置。获取带有可操作建议的安全评分 — 100%客户端处理,无数据发送到服务器。
常见问题
什么是HTTP头部分析器?它有什么作用?
HTTP头部分析器是一个工具,用于解析原始HTTP头部(请求和响应),并为每个头部提供人类可读的解释。它按功能对头部进行分类(安全、缓存、CORS、内容等),执行安全审计以检查关键安全头部的存在和正确性,并生成安全评分。
如何使用此工具?
1. 从浏览器DevTools(网络标签页)、curl -v输出或服务器日志中复制HTTP头部。2. 将原始头部粘贴到文本区域中。3. 选择请求头部或响应头部。4. 在解析结果标签页中查看结果。5. 切换到安全审计查看安全评分。
我的数据安全吗?会发送到服务器吗?
绝对安全。此工具使用客户端JavaScript在浏览器中100%运行。没有任何数据会传输到任何服务器。所有解析和分析都在浏览器中本地进行。
每个网站应该有哪些安全头部?
每个网站应实施以下关键安全头部:(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分)。等级:A+(95-100)到F(0-39)。
请求头部和响应头部有什么区别?
请求头部由客户端(浏览器)发送到服务器,包括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})`);