身分驗證
該標籤下有 5 篇文章
只加了登入就以為安全了嗎 — 身分驗證與授權的差別
身分驗證=確認一個人是誰;授權=決定這個人可以做什麼。兩者是不同的東西,只加了登入並不等於做了授權。資料若沒有依擁有者(user_id)做範圍限制,就會變成「登入=看到全部資料」——這正是 OWASP 排名第一的 Broken Access Control。若再疊上開放註冊的腳手架,陌生人就能自行註冊直接走進來。防禦:把每個查詢都限縮到擁有者、關閉不需要的註冊、多層防禦、在事故發生前備好稽核/存取記錄、偵測新的註冊。
什麼是 passkey(通行金鑰)— 不用密碼、偷不走的登入方式
passkey=不持有共享祕密(密碼)的登入方式。用裝置內的私鑰+生物辨識簽章,伺服器只保存公鑰。所以即使外洩也無法被濫用,在假網域上簽章無法成立=抗釣魚能力在結構上更強。比密碼+簡訊驗證碼更安全,遷移時從重要帳戶開始分階段推進才實際。
密碼雜湊是什麼 — 用不可逆的單向轉換安全保存密碼的機制
密碼雜湊=用不可逆的單向轉換來保存密碼的方法。明文保存不可取。與加密不同,它無法被解密,這正是優點。但直接使用 MD5/SHA-256 會被彩虹表或暴力破解攻破。正確做法是『每個使用者不同的 salt』+『故意做得很慢的專用雜湊(bcrypt/Argon2/scrypt)』。不要自己實作,交給標準函式庫。
如何安全儲存密碼 —— 雜湊與加鹽的正確做法
面向伺服器端的密碼安全儲存實戰指南。先理解明文、加密、裸雜湊為什麼都不行,再收斂到『為每個使用者加鹽+故意放慢的專用雜湊(首選 Argon2id,其次 bcrypt/scrypt)』。不要自己造輪子,直接用標準函式;成本參數要定期複核;既有的弱雜湊在使用者登入時重新雜湊以完成遷移。
JWT(JSON Web Token)是什麼 — 帶簽章的通行證原理與安全用法
JWT 是伺服器簽章後發放的、無法竄改的「通行證」。它由 header.payload.signature 三部分組成,伺服器透過簽章來校驗是否為真品。要點=①必須校驗簽章並固定期望的 alg(拒絕 alg:none)②內容人人可讀,不要放機密③把有效期設短並準備失效策略。解碼(讀取內容)與校驗(用簽章確認真偽)是兩回事。