iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
Modern Web

AI 驅動的 Web 資安新時代系列 第 13

Day13 - 我的 AI Agent 資安顧問:即問即答即執行

  • 分享至 

  • xImage
  •  

在傳統網站開發中,安全檢測 往往需要人工反覆檢查:

  • HTTP Headers 有沒有缺少?
  • Cookie 是否正確設定?
  • 登入流程是否容易被破解?

這些工作不但耗時,而且容易遺漏。

因此,我們示範如何用 AI Agent 當資安顧問,做到:

  • 即問 → 只要丟出網站回應,AI 就能理解
  • 即答 → AI 自動分析問題並回饋原因
  • 即執行 → AI 給出具體修正建議

工作流程

  1. 收集
    • server.js 建立一個模擬 API
    • agent.js 呼叫 API,收集 Response Headers + Body
  2. 分析
    • agent.js 把資料交給 Gemini 模型
    • AI 分析是否存在資安問題
  3. 回饋建議
    • AI 輸出「問題 → 原因 → 修正建議」
    • 開發者可以直接依建議修正

server - 模擬網站伺服器

import express from "express";
import bodyParser from "body-parser";

const app = express();
const PORT = 3000;

app.use(bodyParser.json());

// 模擬一個不安全的登入 API
app.post("/login", (req, res) => {
  const { username, password } = req.body;

  // 這裡故意寫得很不安全 (只要帳密正確就回傳)
  if (username === "admin" && password === "1234") {
    res.cookie("session", "abc123", {
      httpOnly: false,   // 沒有 HttpOnly → JS 可以讀取
      secure: false,     // 沒有 Secure → HTTP 明文也會傳
    });
    return res.status(200).send("Login success (但 Cookie 設定不安全)");
  }

  return res.status(401).send("Login failed");
});

app.listen(PORT, () => {
  console.log(`測試伺服器啟動:http://localhost:${PORT}`);
});

AI Agent - 自動檢測與建議

1、呼叫伺服器 API,模擬登入

async function callServer() {
   const res = await fetch(apiUrl, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ username: "admin", password: "1234" }),
   });

   const headers = Object.fromEntries(res.headers.entries());
   const body = await res.text();

   return { status: res.status, headers, body };
}

2、Gemini AI 分析

async function analyzeResponse(response) {
  const prompt = `
  你是一個資安顧問 AI。
  以下是伺服器的回應,請檢查是否存在資安問題,並提供修正建議:

  狀態碼: ${response.status}
  Headers: ${JSON.stringify(response.headers, null, 2)}
  Body: ${response.body}

  輸出格式:
  - 問題
  - 原因
  - 修正建議
  `;

  const result = await model.generateContent(prompt);
  console.log("AI Agent 分析結果:\n");
  console.log(result.response.text());
}

3、主流程:即問即答即執行

(async () => {
  const response = await callServer();
  await analyzeResponse(response);
})();

上一篇
Day12 - 密碼與認證:AI Agent 協助 MFA 與弱密碼偵測
下一篇
Day14 - Agent 偵測前端弱點:過時 JS Library 自動警示
系列文
AI 驅動的 Web 資安新時代16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言