Files
coolcoth.com/verify_coolcoth_deploy.sh
T
2026-08-08 17:19:44 +08:00

33 lines
2.0 KiB
Bash

#!/usr/bin/env bash
# verify_coolcoth_deploy.sh
# 部署到 coolcoth.com 后自动复核安全响应头是否生效。
# 用法: bash verify_coolcoth_deploy.sh
set -u
HOST="coolcoth.com"
pass=0; fail=0
check(){ # $1=名称 $2=是否通过(1/0) $3=实际值
if [ "$2" = "1" ]; then echo "[PASS] $1"; pass=$((pass+1));
else echo "[FAIL] $1 -> 实际: $3"; fail=$((fail+1)); fi
}
hdr=$(curl -s -D - -o /dev/null -m 15 "https://$HOST/")
hsts=$(printf '%s' "$hdr" | tr -d '\r' | awk -F': ' 'tolower($1)=="strict-transport-security"{print $2}')
ref=$(printf '%s' "$hdr" | tr -d '\r' | awk -F': ' 'tolower($1)=="referrer-policy"{print $2}')
perm=$(printf '%s' "$hdr" | tr -d '\r' | awk -F': ' 'tolower($1)=="permissions-policy"{print $2}')
xct=$(printf '%s' "$hdr" | tr -d '\r' | awk -F': ' 'tolower($1)=="x-content-type-options"{print $2}')
echo "=== coolcoth.com 部署复核 @ $(date '+%F %T') ==="
echo "$hsts" | grep -q "max-age=63072000" && check "HSTS max-age=63072000" 1 || check "HSTS max-age" 0 "$hsts"
echo "$hsts" | grep -q "includeSubDomains" && check "HSTS includeSubDomains" 1 || check "HSTS includeSubDomains" 0 "$hsts"
echo "$hsts" | grep -q "preload" && check "HSTS preload" 1 || check "HSTS preload" 0 "$hsts"
echo "$ref" | grep -qi "strict-origin-when-cross-origin" && check "Referrer-Policy=strict-origin-when-cross-origin" 1 || check "Referrer-Policy" 0 "$ref"
echo "$perm" | grep -q "payment=()" && check "Permissions-Policy 含 payment=()" 1 || check "Permissions-Policy payment" 0 "$perm"
echo "$xct" | grep -qi "nosniff" && check "X-Content-Type-Options=nosniff" 1 || check "X-Content-Type-Options" 0 "$xct"
echo "----"
echo "PASS=$pass FAIL=$fail"
[ "$fail" = "0" ] && echo ">> 部署成功 ✅(所有安全头已生效)" || echo ">> 仍有未生效项 ❌(部署/清OPcache未完成)"
echo
echo "【登录 429 限流需人工确认】验证码为算术图,外部自动化无法解;请按手册第5步用有效 csrf+captcha 压测 5~6 次错密,确认返回 429。"