# Regexp extracted from https://stackoverflow.com/questions/19605150/regex-for-password-must-contain-at-least-eight-characters-at-least-one-number-a
return if password.blank? || password =~ /(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-])/

errors.add :password, 'Complexity requirement not met. Please use: 1 uppercase, 1 lowercase, 1 digit and 1 special character'
end

請記住,其中一些規(guī)范在保護用戶方面比其他規(guī)范更為有效,但當用戶不愿意遵守它們時,它們也可能產生相反的效果。

添加嚴格的憑證恢復流程

憑證恢復過程應該需要進行多次驗證檢查,這使得攻擊者濫用它變得復雜且昂貴。

為了在 devise 中實現(xiàn)這一點,您可以使用devise_initializer.rb文件中的以下配置設置:

實施密碼保護措施

實施密碼泄露保護機制可讓您的系統(tǒng)鎖定密碼被識別為泄露的用戶的帳戶。這樣,您可以確保用戶在被惡意攻擊者竊取其憑據(jù)時有時間防止密碼泄露。

為了提供此安全功能,我們推薦Pwned,它提供了更新的泄露密碼存儲庫,以便實時進行交叉驗證。

調節(jié)會話長度

Web 應用程序必須在用戶處于不活動狀態(tài)一段時間后結束用戶會話。要控制應用程序會話的長度,只需修改devise_initializer.rb文件中的config.timeout_in設置。

改善會話管理

我們的平臺必須在每次身份驗證成功后提供單獨的會話 ID。此外,我們的系統(tǒng)必須在會話結束后立即使舊會話 ID 失效,以防止劫持。

幸運的是,devise 已經為我們解決了這個問題。

忽略會話 ID URL 的使用

這里不需要過多解釋。Web URL 必須使用 SSL 進行保護,并且不能包含會話 ID。

結論

以上就是我們對身份驗證失敗及其復雜性的簡要探討。但請記住,這絕不是廣泛或完整的。

在本文中,我們花了一些時間闡述身份驗證失效這一主題,并簡要分析了網絡上許多最常見和最隱蔽的漏洞。此外,我們還提供了一些可行且直接的策略來緩解這些漏洞。

然而,我們的工作是實施強有力且廣泛的安全措施來保護用戶的數(shù)據(jù)和客戶的資產。

這就是為什么我們建議您考慮使用 StackHawk 的動態(tài)應用程序安全測試。

文章來源:Rails Broken Authentication Guide: Examples and Prevention

上一篇:

.NET訪問中斷控制指南:示例及預防

下一篇:

Node.js破損訪問控制指南:示例與預防
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數(shù)據(jù)驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費