傳統上,系統配置大多依賴人工調整與檢查。
但人為失誤往往是資安漏洞的來源之一。
AI Agent 可以自動驗證配置,減少錯誤率,讓系統更穩定安全。
它不只是一個「檢查清單」,而是能結合 AI 的語意理解,自動判斷問題並提出修正方案。
HttpOnly
)這些狀況往往導致「安全性配置缺失」,但又不容易在第一時間被發現。
最大的差別是:我們不用自己寫死 if/else 規則,AI 會根據上下文自動補充更多可能的漏洞(例如 CSP 缺失),避免人眼遺漏。
import express from "express";
import cookieParser from "cookie-parser";
const app = express();
app.use(cookieParser());
// 測試 API
app.get("/test", (req, res) => {
// 故意只設部分 header,模擬「人為配置錯誤」
res.setHeader("X-Powered-By", "Express"); // 應移除
res.setHeader("Referrer-Policy", "unsafe-url"); // 太寬鬆
// Cookie 測試
res.cookie("sessionId", "abc123", {
// 缺少 Secure、HttpOnly、SameSite
});
res.json({ msg: "Hello from server with weak headers" });
});
// 啟動伺服器
app.listen(3000, () => {
console.log("測試伺服器啟動: http://localhost:3000");
});
node-fetch
→ 幫我們向目標伺服器發送請求,取得 Response Headers 與 Cookies。dotenv/config
→ 自動讀取 .env
檔案裡的 GEMINI_API_KEY
,避免把金鑰寫死在程式碼中。GoogleGenerativeAI
→ 官方 Gemini SDK,用來呼叫指定模型(例如 gemini-1.5-flash
),產生 AI 判斷與修正建議。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);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
fetch
發送 GET 請求,拿到伺服器回應。Object.fromEntries(res.headers.entries())
轉成一般物件,方便處理。Set-Cookie
標頭,交給 AI 檢測。async function collectHeaders() {
const res = await fetch(targetUrl, { method: "GET" });
const headers = Object.fromEntries(res.headers.entries());
const cookies = res.headers.get("set-cookie");
return { headers, cookies };
}
prompt
中直接塞入收集到的 Headers / Cookies。async function aiReview(headers, cookies) {
const prompt = `
你是一個資安檢測 Agent。
以下是伺服器的 HTTP Headers 與 Cookies,請你幫我:
1. 找出所有安全性問題
2. 說明為什麼有問題
3. 提供正確的修正建議(具體的 header 或 cookie 設定範例)
4. 輸出時用條列清單,方便閱讀
---
HTTP Headers:
${JSON.stringify(headers, null, 2)}
Cookies:
${cookies || "無"}
---
`;
const result = await model.generateContent(prompt);
return result.response.text();
}
collectHeaders()
→ 抓取伺服器回應。aiReview()
→ 把結果交給 Gemini 分析。async function main() {
const { headers, cookies } = await collectHeaders();
const aiResult = await aiReview(headers, cookies);
console.log("=== AI 驗證報告 ===");
console.log(aiResult);
}
main();