身分驗證
該標籤下有 7 篇文章
密碼重設的設計缺陷:登入再強也會被盜帳號的 5 種情況與修正方式
重設流程是讓不知道密碼的人設定新密碼的機制,所以它本身就是一條驗證路徑。登入再怎麼強化,只要重設弱,重設的強度就是你真正的驗證強度。5 種失敗型態:可被猜中的權杖、不會過期的權杖、留在信箱裡還能用的連結、目的地可以從外部指定的連結(Host 標頭),以及透露帳號是否存在的回應。實作的關鍵是把指南要求的事項,和指南留給你決定的數值分開來看。
速率限制與濫用控制:設計能擋住暴力破解與費用暴增的限制
速率限制失敗,通常不是因為上限太寬鬆,而是問錯了問題。三個問題:以誰為單位計算(IP 可以偽造,也被真正的使用者共用,所以身分優先)、計算什麼(只算請求數會漏掉單次就很昂貴的操作,例如費用、大小、筆數)、達到上限時怎麼處理(粗暴的鎖定等於對合法使用者發動阻斷服務)。NIST 把連續失敗上限定為 100 次,並要求以延遲和 CAPTCHA 取代把人擋在門外;OWASP 把第三方服務的支出上限列為防止財務損失的最後一道控制。
身分驗證與授權的差別:只有登入,保護不了其他使用者的資料
身分驗證=確認一個人是誰;授權=決定這個人可以做什麼。兩者是不同的東西,只加了登入並不等於做了授權。資料若沒有依擁有者(user_id)做範圍限制,就會變成「登入=看到全部資料」——這正是 OWASP 排名第一的 Broken Access Control。若再加上註冊頁一直開著的腳手架,陌生人就能自行註冊並進入。防禦:把每個查詢都限縮到擁有者、關閉不需要的註冊、多層防禦、在事故發生前備好稽核/存取記錄、偵測新的註冊。
通行金鑰是什麼:公開金鑰登入、抗釣魚與同步
通行金鑰透過私密金鑰簽章完成認證,登入服務保存公開金鑰。同步通行金鑰可在裝置間同步加密的憑證,裝置綁定型則不同步。能否構成 MFA 取決於要求的使用者驗證,裝置、同步帳號與復原流程仍需保護。
密碼雜湊是什麼?用不可逆的單向轉換安全保存密碼的機制
密碼雜湊=用不可逆的單向轉換來保存密碼的方法。明文保存不可取。與加密不同,它無法被解密,這正是優點。但直接使用 MD5/SHA-256 會被彩虹表或暴力破解攻破。正確做法是『每個使用者不同的 salt』+『故意做得很慢的專用雜湊(bcrypt/Argon2/scrypt)』。不要自己實作,交給標準函式庫。
如何安全儲存密碼:雜湊與加鹽的正確做法
面向伺服器端的密碼安全儲存實戰指南。先理解明文、加密、裸雜湊為什麼都不行,再收斂到『為每個使用者加鹽+故意放慢的專用雜湊(首選 Argon2id,其次 bcrypt/scrypt)』。不要自己造輪子,直接用標準函式;成本參數要定期複核;既有的弱雜湊在使用者登入時重新雜湊以完成遷移。
JWT(JSON Web Token)是什麼?帶簽章權杖的原理與安全用法
JWT 是伺服器簽章後發放、能察覺竄改的權杖。它由 header.payload.signature 三部分組成,伺服器透過簽章來校驗是否為真品。要點=①必須校驗簽章並固定期望的 alg(拒絕 alg:none)②內容人人可讀,不要放機密③把有效期設短並準備失效策略。解碼(讀取內容)與校驗(用簽章確認真偽)是兩回事。