跳至主要內容
>_ITDITD網站資安平台

各框架對策

Express(Node.js)的資安對策 — 防禦要『自己補上』

Express 是最小主義的框架,預設幾乎什麼都不替你守。所以防禦要『自己補上』——安全性標頭、輸入驗證、授權(別停在驗證)、速率限制,以及相依套件(npm)的 CVE 監控。以防禦視角講解該補什麼、怎麼補,不含攻擊步驟。

發布於 2026-07-02 更新於 2026-07-02 閱讀時間 2 分鐘

對象:正在 Express(Node.js)上維運 API 或應用程式的人。這裡不談攻擊步驟,只講要替最小框架『自己補上』的防禦。想看全貌,請參閱 各框架資安對策的入口

要『自己補上』的防禦(不在預設裡的領域)

Express 只提供路由與中介層的地基。以下這些防禦你不補上就不存在

安全性標頭

CSP/HSTS/X-Content-Type 等。以 helmet 相當中介層加上。

輸入驗證

未驗證的輸入是 SQLi/XSS/注入的入口。

授權(擁有者範圍)

只停在驗證,換個 ID 就能看到他人的資料(IDOR)。

速率限制

抑制登入暴力破解、API 濫用與 DoS。

相依套件(npm)CVE

對大量相依套件的已知漏洞做機器監控+迅速修補。

機密與 SSRF

機密放環境變數、不混進程式碼/對外抓取 URL 做 SSRF 防護。

Express 上要自己補的防禦。框架預設不替你守這些。

補起來的方法(最起碼的五點)

1

加上安全性標頭

用 helmet 相當的中介層加上 CSP、HSTS、X-Content-Type-Options 等。預設不會加,所以最先放進去墊高底線。(→ 安全性標頭檢測
2

驗證並淨化所有輸入

驗證 body、query、params、headers。絕不把未驗證的值交給資料庫查詢、HTML 或作業系統命令(注入防護)。
3

別只驗證、要寫授權

即使已登入,也要對每個操作限定範圍到擁有目標的使用者。忘了寫,換個 ID 就能操作他人的資料(→ IDOR 是什麼)。
4

速率限制與相依套件 CVE 監控

對登入與 API 加上速率限制,抑制暴力破解與 DoS。用機器監控相依套件(npm)的 CVE 並迅速修補(→ 監控相依套件的 CVE)。對外抓取 URL 要防SSRF(→ SSRF 是什麼)。

常見(危險)

  • 不加標頭的素回應
  • 未驗證就把輸入交給資料庫/HTML
  • 不寫授權——「已登入=允許」
  • 沒有速率限制、放任相依套件 CVE

正確

  • helmet 相當中介層加上標頭
  • 輸入經過驗證與淨化
  • 擁有者範圍的授權
  • 速率限制+相依套件 CVE 監控+迅速修補

本站的觀點:最小框架是『自由與責任』成套

Express 的好處是輕巧與自由,但那意味著防禦也要自己設計。本站是不同的技術棧,但 Node 系要守的重點相同——加上標頭、驗證輸入、在公開入口一定要寫授權、每次部署前對相依套件做 CVE 稽核。尤其 Node 的相依套件數量龐大,相依套件的新鮮度決定事故的成敗。丟掉「框架會替我守」的假設,把防禦明確地補上去,才是使用 Express 的正確方式。

接下來讀

FAQ

QExpress 是安全的框架嗎?
A

Express 的設計是『最小主義』,只提供路由與中介層的地基,幾乎不內建資安功能。也就是說它既不安全也不危險,防禦是要開發者自己補上的前提。與 Rails、Laravel 這類預設就替你守住很多的框架不同,標頭、輸入驗證、授權、速率限制都得自己組進去。自由度越高,責任也越在自己身上。

Q需要像 helmet 那樣的安全性標頭嗎?
A

需要。Express 預設不會加上資安相關的 HTTP 標頭。請用 helmet 相當的中介層加上 CSP、HSTS、X-Content-Type-Options 等,降低點擊劫持、MIME 探測等基本風險。光是加上去就能墊高底線,因此值得最先放進去。

Q最起碼要做什麼?
A

(1) 加上安全性標頭(helmet 相當);(2) 驗證並淨化所有輸入;(3) 別停在登入(驗證)——寫出擁有者範圍的授權;(4) 對登入與 API 加上速率限制;(5) 用機器監控相依套件(npm)的 CVE 並迅速修補。這五點就能補起最小框架的大半破口。