在網站防禦中,HTTP Security Headers 是最基礎、也是最容易被忽略的一環。
常見問題是:
這時候就可以交給 AI Agent 來協助:
它可以自動檢測伺服器回應,清理多餘或錯誤的標頭,並建議最佳化的安全組合。
Content-Security-Policy (CSP) → 防止 XSS、惡意資源
Strict-Transport-Security (HSTS) → 強制 HTTPS
X-Frame-Options / CSP frame-ancestors → 防止點擊劫持
X-Content-Type-Options → 阻止 MIME sniffing
Referrer-Policy → 控制來源資訊洩漏
Permissions-Policy → 限制瀏覽器功能(麥克風、相機、定位等)
Cross-Origin- 系列→ 防止跨來源資源濫用
AI Agent 可能的工作流程
curl -I
或瀏覽器 DevTools 讀取回應 HeaderX-Frame-Options
與 CSP frame-ancestors
)default-src *
→ 建議改 'self'
)import express from "express";
const app = express();
const port = 3000;
// 範例:刻意用不完整/不安全的 Headers
app.get("/", (req, res) => {
res.set({
"Content-Type": "text/html",
"Referrer-Policy": "strict-origin-when-cross-origin", // 故意設定得不安全
"X-Powered-By": "Express" // 不應該暴露
// 其他安全標頭都沒加,方便測試 AI Agent
});
res.send("<h1>Hello, Security Test!</h1>");
});
app.listen(port, () => {
console.log(`測試伺服器啟動: http://localhost:${port}`);
});
node-fetch
→ 幫我們抓取網站的 Response Headers。dotenv/config
→ 自動讀取 .env
裡的 GEMINI_API_KEY
。GoogleGenerativeAI
→ 官方 Gemini SDK,用來呼叫模型。import fetch from "node-fetch";
import 'dotenv/config';
import { GoogleGenerativeAI } from "@google/generative-ai";
const API_KEY = process.env.GEMINI_API_KEY;
const genAI = new GoogleGenerativeAI(API_KEY);
fetch(url)
連線到目標伺服器。const response = await fetch(url);
const headers = {};
response.headers.forEach((val, key) => {
headers[key.toLowerCase()] = val;
});
gemini-1.5-pro
,換成更精細的分析。const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = `
你是一個 Web Security AI Agent。
以下是某網站的 HTTP Response Headers:
${JSON.stringify(headers, null, 2)}
請幫我檢查這些 headers 的安全性,並依照以下格式輸出:
1. 缺少的標頭 (列出名稱 + 建議值)
2. 設定錯誤或過寬的標頭 (目前值 vs 建議值)
3. 最佳化後的 Nginx add_header 配置範例
`;
const result = await model.generateContent(prompt);
console.log("\n AI Agent 分析報告:\n");
console.log(result.response.text());