快速摘要
AI 寫的程式碼可能「看起來能跑」但暗藏安全漏洞。飛飛整理了用 AI 做網站時最常見的 10 個資安風險,每個都附上實際的檢查方法。不管你用 Cursor、Claude Code 還是 Copilot,上線前請逐一核對。

為什麼 AI 生成的程式碼更需要安全審查

AI 生成程式碼的速度快得驚人——一個下午就能做出一個完整的網站。但速度快不代表安全。AI 模型在訓練時接觸了大量的範例程式碼,其中包括很多有安全問題的寫法。

更危險的是,AI 生成的程式碼通常「看起來非常專業」——變數命名合理、結構清晰、有註解。這反而讓人放鬆警惕,忽略了安全審查。

飛飛的實測觀察
在測試中,我讓不同的 AI 工具生成 CRUD 網站後端,超過 70% 的結果存在至少一個 OWASP Top 10 等級的安全漏洞。最常見的是缺少輸入驗證和硬編碼密碼。

風險 1:跨站腳本攻擊 (XSS)

AI 經常生成直接將使用者輸入插入 HTML 的程式碼,沒有做適當的跳脫(escape)。

常見場景:

  • 留言板、評論區直接顯示使用者輸入
  • 搜尋頁面反射搜尋關鍵字
  • 使用 innerHTML 而非 textContent

檢查方法:在所有使用者可輸入的欄位嘗試輸入 <script>alert(1)</script>。如果彈出對話框,代表有 XSS 漏洞。

風險 2:SQL Injection

AI 在生成資料庫查詢時,經常使用字串拼接而非參數化查詢,讓攻擊者可以注入惡意 SQL 指令。

錯誤寫法(AI 常生成):

db.query("SELECT * FROM users WHERE id = " + userId)

正確寫法:

db.query("SELECT * FROM users WHERE id = ?", [userId])

檢查方法:在輸入欄位嘗試輸入 ' OR 1=1 --,觀察是否回傳非預期的資料。

風險 3:硬編碼的敏感資訊

AI 在示範 API 串接時,經常把 API Key、密碼直接寫在程式碼中。

常見狀況:

  • API Key 直接寫在前端 JavaScript 中
  • 資料庫密碼寫在設定檔中
  • JWT Secret 硬編碼在程式碼裡

檢查方法:grep -r "password\|secret\|api_key\|apikey" --include="*.js" --include="*.py" --include="*.env" 搜尋專案中的硬編碼敏感資訊。

風險 4:未驗證的套件依賴

AI 推薦的 npm/pip 套件可能已經過時、有已知漏洞、甚至是惡意套件。

檢查方法:

  • npm:npm audit
  • pip:pip-auditsafety check
  • 檢查套件的最後更新時間和下載量

風險 5:CORS 設定錯誤

AI 為了讓開發過程順暢,經常設定 Access-Control-Allow-Origin: *,允許任何網站存取你的 API。

正確做法:明確列出允許的來源域名,不要使用萬用字元。

風險 6:缺少 CSP 標頭

Content Security Policy 是防禦 XSS 的重要機制,但 AI 幾乎從不主動加入。

檢查方法:用瀏覽器開發者工具查看 Response Headers,確認有 Content-Security-Policy 標頭。

風險 7:不安全的 API 端點

AI 生成的 API 通常沒有身份驗證機制,任何人都可以存取。

常見問題:

  • 沒有 API 認證(API Key 或 JWT)
  • 沒有權限檢查(任何人都可以刪除資料)
  • 沒有 HTTPS 強制

風險 8:缺少輸入驗證

AI 生成的表單處理通常直接信任使用者輸入,沒有做長度限制、格式驗證、類型檢查。

檢查方法:對每個表單欄位嘗試超長字串、特殊字元、非預期的資料類型。

風險 9:預設憑證未更改

AI 在設定資料庫、管理後台時,經常使用預設的帳號密碼(admin/admin123)。

檢查方法:搜尋程式碼中的 admin、root、default 等關鍵字。

風險 10:缺少速率限制

沒有速率限制的 API 容易被暴力破解或 DDoS 攻擊。AI 生成的程式碼幾乎從不主動加入 rate limiting。

解決方案:使用 Express 的 express-rate-limit 或 Nginx 的 limit_req 模組。

上線前安全檢查清單

檢查項目工具通過標準
XSS 測試手動 + OWASP ZAP所有輸入都有跳脫
SQL Injectionsqlmap所有查詢都參數化
硬編碼密碼grep / git-secrets無硬編碼敏感資訊
套件漏洞npm audit / pip-audit無高危漏洞
CORS瀏覽器 DevTools明確列出允許來源
CSPsecurityheaders.com有完整 CSP 標頭
HTTPSSSL LabsA 等級以上
速率限制curl 壓測有速率限制機制

常見問題

AI 生成的前端靜態網站也有安全風險嗎?

有。即使是純前端的靜態網站,也可能有 XSS 漏洞(透過 URL 參數或 DOM 操作)、外部 CDN 被入侵、或 JavaScript 套件有漏洞等風險。

有什麼自動化工具可以檢查安全問題?

推薦 OWASP ZAP(免費開源的安全掃描工具)、npm audit(Node.js 套件漏洞掃描)、以及 GitHub 的 Dependabot(自動檢查套件漏洞)。

我只是做個人部落格,也需要這麼嚴格嗎?

基本的安全措施(HTTPS、不要硬編碼密碼、輸入驗證)對任何網站都是必要的。個人部落格可以不用做到企業級的安全標準,但至少要完成上面清單中的前四項。