在我的註冊表單中,我對輸入焦點上的電子郵件和用戶名進行了ajax db查找。 。這是一個壞主意嗎?爲什麼?如果用戶查找>允許查找,我還計劃附加一個鎖定。是否提交數據庫查找錯誤?
回答
不,這不是一個壞主意。相反,與僅僅爲了告訴用戶電子郵件已被佔用而必須提交整個表單相比,它改善了用戶體驗並減少了帶寬使用。所有主要網站都這樣做。就拿谷歌的登記表:https://accounts.google.com/SignUp?continue=https%3A%2F%2Fwww.google.com%2F&hl=en
是的,實際上這就是爲什麼我也爲我的用戶這樣做,因爲其他更大的網站具有該功能。但是有什麼缺點? –
我不認爲這有缺點。 –
這可能會導致一個User Enumeration漏洞 - 即攻擊者可以很容易地收穫通過蠻力從您的系統的用戶名和電子郵件地址,或通過測試的用戶名和電子郵件地址的另一個列表中的已知列表找出他們是否是活躍用戶。
您提到了添加鎖定,但是根據什麼標準確定嘗試的用戶查找次數?由cookie或會話分組將是不安全的,因爲攻擊者可以簡單地清除他們的cookie或開始新的會話。 IP會是更好的方式(例如,每30分鐘每個唯一IP允許10次查找),但作爲攻擊者可以使用分佈式攻擊,他們可以繞過這種方法。
如果這是您系統的問題,請參閱我的answer here以獲得更安全的方式。這涉及用戶只能在通過發送到該地址的鏈接繼續註冊過程的表單上輸入他們的電子郵件地址。如果您是作爲第一步執行此操作,那麼您會知道該用戶在下一步中嘗試過哪些用戶名,因爲這些查找將與輸入的電子郵件地址相關聯,並且可以通過唯一身份限制用戶名查找的數量電子郵件。這將使攻擊者難以枚舉用戶名,並且幾乎不可能枚舉電子郵件地址。
- 1. 提交表單到數據庫錯誤
- 2. 按鈕提交到數據庫錯誤
- 3. 檢查網站表單是否正在提交到數據庫
- 4. Ruby on Rails的 - 檢查是否提交的表單數據數據庫數據
- 5. Cakephp查找所有數據庫錯誤
- 6. 檢查ajax/jquery表單提交(檢查數值是否在數據庫中)
- 7. 在將數據提交到MySql數據庫之前檢查是否存在
- 8. HTML5本地數據庫查找數據庫表是否存在
- 9. 數據庫錯誤:查找類型'in'不能否定
- 10. 數據未提交到數據庫並顯示「錯誤」消息
- 11. 查找提交提交
- 12. JavaScript - 檢查後提交到數據庫
- 13. 在mysql數據庫中查找提交按鈕對應的行
- 14. 檢查數據庫配置項中是否沒有錯誤3
- 15. 錯誤查詢數據庫
- 16. 檢查提交是否在提交前第一次提交
- 17. 提交中的數據類型錯誤
- 18. 分佈式數據庫事務是否保證提交/回滾?
- 19. 在提交數據庫之前ActiveRecord關聯是否有效?
- 20. Azure SQL數據庫是否支持兩階段提交(2PC)?
- 21. 檢查一個url是否已經在php數據庫中提交
- 22. SVN提交錯誤說試圖寫一個只讀數據庫
- 23. 在CodeIgniter中提交表單時出現數據庫錯誤
- 24. PHP提交MySQL數據庫的錯誤信息
- 25. 試圖找出這個數據庫提交的數據是否有壓縮數據
- 26. Javascript提交表單時檢查表單數據是否更改?
- 27. 檢查數據是否已提交然後等待24小時
- 28. 提交到數據庫
- 29. 數據庫提交性能
- 30. LinqPad測試查找正確的數據庫但查詢錯誤
此問題似乎是題外話題,因爲它涉及安全性,屬於[Security.SE](http://security.stackexchange.com)。 – Gumbo
@Gumbo我其實在尋找一個普遍的答案。如果它的好壞,使用它的缺點等等。不僅僅是在網絡安全角度。 –