VCA

身分驗證 Auth

Auth 負責回答兩個問題:你是誰(驗證)、你能做什麼(授權)。

更新於 閱讀約 1 分鐘編輯方針#系統基礎#安全#登入

一句話解釋

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 路線 的下一步: 金鑰與密碼