用 AI 做一個登入系統
從零用 AI 做出安全的登入:註冊、登入、登出與「誰能看什麼」,以及新手最常踩的安全坑。
屬於路線CRM 路線
一句話解釋
登入系統=驗證「你是誰」+授權「你能做什麼」;用 AI 也要把安全規則講清楚,它才不會產生有洞的程式。
你會做出什麼
一個能註冊、登入、登出,並依角色控制權限的系統雛形,而且你知道哪些安全規則不能省。
先搞懂:登入其實是兩件事
很多人以為「登入」只是輸入帳號密碼。其實它是兩件事:驗證(你是誰)和授權(你能做什麼)。驗證成功後,系統會發給你一張看不見的「通行證」,之後每次操作都帶著它,系統才知道是你、而且知道你有沒有資格做這件事。
這篇不教你背語法,而是教你怎麼跟 AI 描述需求,讓它產生的登入功能是安全的,而不是看起來會動、但一上線就被人繞過。
三條路:自己做、用平台、用第三方登入
| 做法 | 適合 | 要注意 |
|---|---|---|
| 自己做密碼登入 | 想完全掌控、學原理 | 密碼雜湊、Token 效期、防爆破都要自己顧 |
| 用 Auth 平台 | 想快、又要安全 | 綁定供應商;多半有免費額度 |
| 第三方登入(Google 等) | 降低註冊門檻 | 仍要在自己這邊建立 session |
新手最務實的選擇通常是「平台 Auth + 第三方登入」,把最容易出包的密碼保管交給專業的人,自己專注在「誰能看什麼」。
跟 AI 這樣說,它才不會給你有洞的程式
AI 很會寫「能動」的登入,但預設不一定安全。下指令時,明確要求這幾點:
- 密碼一定要雜湊(用 bcrypt 或 argon2),絕不明文存進資料庫。
- 登入後發的 Token / Session 要設效期,而且能被撤銷(例如登出、改密碼時失效)。
- Token 放在 httpOnly cookie,不要放在前端 JavaScript 拿得到的地方。
- 權限判斷一定在後端做,前端只負責「藏起按鈕」,不能當作安全防線。
把上面這段直接貼給 AI,當作「驗收標準」,再請它一步步實作。
架構圖
新手最常踩的坑
- 明文存密碼:資料庫一外洩,所有人的密碼直接曝光。一定要雜湊。
- Token 沒效期:被偷走就能一直用。設短效期 + 可撤銷。
- 前端決定權限:把「是不是管理員」的判斷寫在畫面上,懂一點的人改一下就闖進後台。
- Secret 寫進前端:API 金鑰、簽章密鑰一旦進到瀏覽器就等於公開。
下一步
- 先把觀念補齊:身分驗證 Auth
- 接著規劃要存哪些使用者資料:用 AI 設計資料庫
常見問題
直接叫 AI 幫我做登入就好,為什麼還要懂這些?
AI 很會寫「能動」的登入,但預設不一定安全:可能明文存密碼、Token 沒效期、把權限判斷放前端。你不需要會寫,但要看得懂這些安全規則,才能把它們當「驗收標準」要求 AI,並檢查它有沒有做到。
自己做密碼登入,還是用 Google 登入比較安全?
對新手來說,用第三方登入(Google 等)或 Auth 平台通常更安全,因為最容易出包的「密碼保管」交給了專業的人。自己做不是不行,但密碼雜湊、防爆破、Token 管理都得自己顧好,門檻較高。
參考來源
- Authentication Cheat Sheet — OWASP
- Session Management Cheat Sheet — OWASP
CRM 路線 的下一步: 從表單到 CRM →