我有一個忘記密碼的頁面,我需要從用戶那裏詢問他的用戶ID,以便從數據庫提供他的密碼,並且它正在工作,但如果有人輸入任何錯誤,該怎麼辦用戶名。檢查數據庫中用戶ID的可用性
0
A
回答
1
您必須做SELECT
檢查是否存在記錄,如果是,繼續。
1
只需返回一條消息,指出他們輸入了錯誤的用戶標識。
0
SELECT * FROM users WHERE username = inputhere
if (mysql_num_rows($result) > 0)
{
// found it
}
else
{
// doesn't exist
}
這是你在找什麼?
1
如果你問你在做什麼,如果他們完全給你另一個用戶的有效ID,那麼我假設你正在做的事情與你正在恢復的密碼相當不安全(你不只是向他們展示密碼是你的嗎?) - 大多數這樣的系統會通過電子郵件向你發送密碼,至少可以保證只有相關的電子郵件帳戶才能獲得密碼。
2
請注意,在此有一定的風險度量。如果您總是回覆一條消息,指出用戶標識不正確,則可以用它來猜測系統中的用戶標識。攻擊者可以使用通用名稱的變體對此表單進行暴力破解,並最終獲得大量用戶名單。對於任何給定的帳戶,這爲他們提供了以該用戶身份登錄所需的一半信息。
我建議您顯示一條消息,指出已向該帳戶的電子郵件地址發送一封電子郵件,其中包含重置密碼(包括重置所需的時間敏感密鑰)的說明,無論用戶系統中是否存在ID。如果他們沒有收到電子郵件,他們總是可以再次嘗試(假設第一次嘗試在用戶標識中包含錯字)。如果他們實際上並不知道他們的用戶ID,可以通過輸入他們的電子郵件地址來恢復該表格(表現方式與此表格類似,總是在表格上顯示成功,並在適用的情況下發送電子郵件)。
2
您必須執行以下3個步驟來確保嚴密的安全。
1)基於用戶標識從數據庫中獲取用戶信息。如果信息爲空,則向用戶發送錯誤,表示無效的UserId。
2)a)如果您在用戶創建時註冊了EmailId,則將密碼發送到註冊郵件。 b)如果您沒有註冊EmailId,請詢問並匹配用戶註冊時選擇的安全問題。 3)如果可能的話,嘗試合併a)& b)點2)的點以獲得更高的安全性。
相關問題
- 1. 即時用戶名檢查可用性使用數據庫asp.net
- 2. 檢查數據庫中的用戶名
- 3. 使用PHP檢查MySQL數據庫中URL的可用性?
- 4. 檢查MySQL數據庫重複的用戶ID
- 5. 檢查數據庫的用戶存在
- 6. 檢查數據庫中的用戶名登錄用戶名MVC3
- 7. PHP用戶ID數據庫
- 8. 的onblur用戶名可用性檢查
- 9. 用戶檢查與jQuery的可用性
- 10. 查詢oracle數據庫的可用性
- 11. Windows用戶檢查數據庫表值
- 12. Firebase數據庫 - 檢查現有用戶
- 13. 對數據庫PDO檢查用戶名
- 14. 用戶名/密碼數據庫檢查
- 15. 如何檢查所有數據庫的可用性在CI 2
- 16. 檢查oracle數據庫是否可用
- 17. 檢查用戶名可用性錯誤
- 18. 檢查用戶名可用性ajax
- 19. 檢查Facebook用戶名可用性 - Python
- 20. Android json檢查用戶名可用性
- 21. 如何檢查用戶可用性
- 22. 檢查用戶名可用性php
- 23. 檢查用戶可用性問題
- 24. 用PHP中的數據庫值檢查用戶輸入值
- 25. 使用jquery和servlet檢查數據庫中的現有用戶
- 26. 檢查用戶數據是否已經在數據庫中
- 27. 如何驗證數據庫中用戶名的可用性?
- 28. 「檢查可用性」的用戶名按鈕仍然是公認存在,而用戶名不存在數據庫
- 29. 用於檢查用戶名可用性的KeyDown上的Jquery Ajax。數據庫命中太多?
- 30. 如何檢查使用JAVA的fmp數據庫的數據庫用戶權限