iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0

在前一章我們模擬了 Webhook 被駭客隨便呼叫的場景。這裡的第一道防線,就是「加上 API Key 驗證」。這能確保只有合法的請求,才會進到你的 workflow。


為什麼需要 API Key?

  • 避免隨機掃描攻擊:駭客用 Shodan 或 Masscan 掃到你的 webhook,如果沒鑰匙就能打,那根本就是「裸奔」。
  • 控制存取權限:只有握有 API Key 的服務或人員,才可以使用這個 webhook。
  • 可追蹤性:每個 key 可以對應一個應用或使用者,方便記錄與追蹤。

在 n8n 中實作 API Key 驗證

  1. 新增一個 Webhook 節點

    • URL 假設是 http://your-n8n-domain/webhook/hello
  2. 在 workflow 開頭加一個 Function 節點

     const apiKey = $json.headers["x-api-key"];
     const validKey = $env.API_KEY;
    
     if (apiKey === validKey) {
       return [
         {
           json: {
             statusCode: 200,
             responseBody: {
               message: "Authorized request",
               body: $json.body
             }
           }
         }
       ];
     } else {
       return [
         {
           json: {
             statusCode: 401,
             responseBody: {
               error: "Unauthorized",
               message: "Invalid API Key"
             }
           }
         }
       ];
     }
    
    

    https://ithelp.ithome.com.tw/upload/images/20250919/20168687ElrUulQgGq.png

設定環境變數

在 n8n 的環境設定檔(docker-compose.yml.env)加入:

API_KEY=supersecret123

呼叫方式

curl -X POST "https://your-n8n-domain/webhook/secure-endpoint" \
  -H "x-api-key: supersecret123" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Hello World"}'

攻防比較

  1. 沒加 API Key
curl -X POST "https://your-n8n-domain/webhook/secure-endpoint" \
  -H "x-api-key: supersecret123" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Hello World"}'

→ 401
https://ithelp.ithome.com.tw/upload/images/20250919/20168687C6cloz5AiX.png

  1. 有加 API Key
curl -X POST "https://your-n8n-domain/webhook/secure-endpoint" \
  -H "x-api-key: supersecret123" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Hello World"}'

→ 成功被觸發
https://ithelp.ithome.com.tw/upload/images/20250919/201686870dUVAM9vSc.png

總結

API Key 驗證雖然簡單,但已經能防住大部分「隨機掃描 / 測試」的攻擊。後面我們還會加上更嚴格的防線(像是簽名驗證、Rate Limiting、IP 白名單),讓 n8n webhook 更難被攻破。


上一篇
# 模擬第一個攻擊 — 不受控的 Webhook 任意被呼叫
系列文
別讓駭客拿走你的AI控制權:MCP x n8n 防禦實戰全攻略5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言