身分驗證 Auth
Auth 負責回答兩個問題:你是誰(驗證)、你能做什麼(授權)。
一句話解釋
Auth 處理『你是誰』與『你能做什麼』,是系統安全的第一道門。
白話文說明
Auth 其實是兩件事的合稱:**驗證(Authentication)**是「證明你是你」,例如輸入帳號密碼或用 Google 登入;**授權(Authorization)**是「決定你能做什麼」,例如一般使用者不能進入管理後台。
登入成功後,系統會發給你一張「通行證」(Token 或 Session),之後每次請求都帶著它,系統就知道是你、不用每次重新輸入密碼。這張通行證要設有效期限、能被撤銷,否則被偷走會很危險。
架構圖
運作流程
真正造成外洩的錯誤
多數 Auth 災難並不高深,往往來自幾個重複出現的錯誤:
- 相信前端的檢查——只把後台按鈕藏起來,後端端點卻沒擋,任何人直接呼叫就進得去。
- Token 沒有期限、也無法撤銷——被偷走的通行證就會永遠有效。
- 用明文存密碼——資料庫一旦外洩,所有帳號同時曝光(密碼應該經過雜湊)。
- 某個端點漏掉授權檢查——只要有一條路徑沒問「你能不能」,攻擊者就有缺口。
常見誤解:以為「登入會動 = 驗證做完了」。登入只回答「你是誰」(驗證);每個敏感操作都還要在後端再做一次「你能不能」的檢查(授權),而通行證(Token)必須有期限與撤銷機制,否則一旦被偷走就會一直有效。
重點整理
- Auth=驗證(你是誰)+ 授權(你能做什麼)。
- 登入後用 Token / Session 當通行證,要設期限與撤銷機制。
- 授權檢查一定要在後端,前端隱藏按鈕不等於安全。
生活化比喻
像進公司:先刷卡證明你是員工(驗證),門禁再決定你能進哪幾層樓(授權)。
優勢
- 保護使用者資料不被別人看到或亂改
- 可依角色控制不同人能做的事
- 標準做法成熟,AI 能產生安全範本
缺點
- 做錯就是安全漏洞,後果嚴重
- Token、Session 等概念對新手較抽象
適用場景
- 有會員、後台、付費功能的系統
- 多人協作、需要權限分級的平台
不適用場景
- 完全公開、沒有個人資料的靜態網站
新手評分卡
- 新手推薦度
- 2/5
- 學習成本(分數越高=成本越高)
- 4/5
- 市場需求
- 5/5
- AI 生成友善度
- 4/5
常見問題
認證(Authentication)和授權(Authorization)有什麼不同?
認證是「你是誰」(驗證身分,如登入);授權是「你能做什麼」(驗證權限,如能不能刪別人的資料)。兩者缺一不可。
我應該自己存使用者密碼嗎?
能不要就不要。優先用 OAuth(用 Google/GitHub 登入)或成熟的驗證服務;真要自存,密碼必須雜湊(如 bcrypt),絕不存明文。
JWT 和 Session 哪個比較安全?
兩者都安全,差別在管理方式:Session 容易即時撤銷,JWT 適合無狀態擴展。新手用平台內建方案即可,別自己發明驗證機制。
CRM 路線 的下一步: 用 AI 做登入 →
SaaS 路線 的下一步: 金鑰與密碼 →