身份证验证 校验码_用户身份验证最佳做法清单
生活随笔
收集整理的這篇文章主要介紹了
身份证验证 校验码_用户身份验证最佳做法清单
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
身份證驗證 校驗碼
用戶身份驗證是每個Web應用程序共享的功能。 我們已經實施了很多次了,所以早就應該完善它了。 然而,錯誤無時無刻不在。
造成這種情況的部分原因是,可能出錯的事情列表很長。 您可能會錯誤地存儲密碼,可能會具有脆弱的密碼重置功能,可能使會話遭受CSRF攻擊,會話可能被劫持,等等。因此,我將嘗試匯編有關用戶身份驗證的最佳做法列表。 每年, OWASP TOP 10始終是您應該閱讀的東西。 但這可能還不夠。
所以,讓我們開始吧。 我會盡量簡明扼要,但我會盡可能涵蓋所有相關的陷阱-例如,用戶會話登錄后可能出什么問題:
- 使用bcrypt / scrypt / PBKDF2存儲密碼。 沒有MD5或SHA,因為它們不利于密碼存儲。 長鹽(每位用戶)是強制性的(上述算法已內置)。 如果您不這樣做,并且有人控制了您的數據庫,則他們將能夠提取所有用戶的密碼。 然后在其他網站上嘗試這些密碼。
- 使用HTTPS。 期。 (否則,用戶憑據可能會通過不受保護的網絡泄漏)。 如果用戶打開純文本版本,則強制使用HTTPS。 并確保僅使用最新的協議(目前使用TLS 1.2; TLS 1.1似乎沒有漏洞,因此也可以受支持)。 您可以進行Qualys掃描以檢查支持的協議版本是否正確。
- 將Cookie標記為secure 。 使餅干盜竊更加困難。
- 使用CSRF保護(例如,隨每個請求驗證的CSRF一次性令牌)。 框架具有內置的此類功能。
- 禁止取景( X-Frame-Options: DENY )。 否則,您的網站可能會以隱藏的iframe包含在另一個網站中,并通過javascript被“濫用”。
- 有一個同源政策
- 注銷–通過刪除所有cookie并使會話無效,讓您的用戶注銷。 這樣可以更安全地使用共享計算機(是的,用戶最好使用私有瀏覽會話,但并非所有人都那么聰明)
- 會話期滿–沒有永久的會話。 如果用戶關閉您的網站,則其會話應在一段時間后到期。 取決于提供的服務,“一會兒”可能仍然是很大的數字。 對于ajax繁重的網站,您可以進行常規的ajax輪詢,以在頁面保持打開狀態時使會話保持活動狀態。
- 記住我-由于永久性cookie被盜的風險,(在這臺機器上)實現“記住我”功能實際上很困難。 Spring-security使用這種方法 ,如果您想實現更持久的登錄,我認為應該遵循。
- 忘記密碼流–忘記密碼流應依賴于向用戶發送一次(或到期)鏈接,并在打開密碼時要求輸入新密碼。 0Auth在這篇文章中對此進行了解釋 ,郵戳給了一些最好的事實 。 如何形成鏈接是一個單獨的討論,有幾種方法。 將密碼重置令牌存儲在用戶配置文件表中,然后將其作為參數發送到鏈接中。 或者不要在數據庫中存儲任何內容,而是發送一些參數: userId:expiresTimestamp:hmac(userId+expiresTimestamp) 。 這樣,您將擁有過期的鏈接(而不是一次性鏈接)。 HMAC依賴于秘密密鑰,因此不會欺騙鏈接。 但是,由于OWASP指南的方法略有不同 ,因此在該主題上似乎尚未達成共識
- 一次性登錄鏈接–這是Slack使用的選項,它發送一次性登錄鏈接,而不是詢問用戶密碼。 它取決于您的電子郵件受到嚴格保護,并且您始終可以訪問它。 如果不經常訪問您的服務,則可以使用該方法代替密碼(而不是除密碼之外)。
- 限制登錄嘗試–無法通過Web UI進行暴力破解; 因此,如果登錄嘗試次數過多,則應將其阻止。 一種方法是僅基于IP阻止它們。 另一種是根據嘗試的帳戶阻止它們。 ( 這里是Spring示例 )。 哪一個更好-我不知道。 兩者實際上可以合并。 除了完全阻止嘗試之外,您還可以在第5次嘗試后添加驗證碼。 但是,請勿在首次嘗試時添加驗證碼-這是糟糕的用戶體驗。
- 不要通過錯誤消息泄漏信息–您不應該允許攻擊者弄清楚是否已注冊電子郵件。 如果未找到電子郵件,則在登錄時僅報告“憑據不正確”。 重置密碼時,可能類似于“如果您的電子郵件已注冊,您應該已經收到了密碼重置電子郵件”。 這通常與可用性不符–人們通常不記得他們過去用來注冊的電子郵件,因此在進入之前檢查大量電子郵件的能力可能很重要。 因此,此規則不是絕對的,盡管這是理想的,尤其是對于更關鍵的系統。
- 確保僅在確實必要時才使用JWT,并要注意一些陷阱。
- 考慮使用第三方身份驗證-OpenID Connect,Google / Facebook / Twitter的OAuth (但也要注意OAuth的缺陷 )。 依靠第三方身份提供者存在相關風險,您仍然必須管理cookie,注銷等,但是簡化了某些身份驗證方面。
- 對于高風險或敏感應用程序,請使用2因子身份驗證 。 不過,Google身份驗證器有一個警告-如果您丟失了手機,則會丟失帳戶(除非有手動過程來恢復它)。 這就是為什么Authy似乎是存儲2FA密鑰的好解決方案。
我確定我缺少什么。 您會發現它很復雜。 遺憾的是,我們仍然處在最常用的功能(驗證用戶身份)的棘手和繁瑣的位置,以至于您幾乎總是會誤解其中的至少一部分。
翻譯自: https://www.javacodegeeks.com/2018/04/user-authentication-best-practices-checklist.html
身份證驗證 校驗碼
總結
以上是生活随笔為你收集整理的身份证验证 校验码_用户身份验证最佳做法清单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安士全书
- 下一篇: 机器学习之信用卡诈骗案例总结