如何確認誰是不需要安全問題,D.O.B,或任何其他參數設密碼?
上下文
在很多網站上,當請求重置密碼,隨機哈希連接到數據庫中的用戶名。該散列作爲URL中的一部分發送給用戶。當用戶點擊通過電子郵件發送的鏈接時,他們會被髮送到可以選擇新密碼的頁面。問題在於,用戶可以在此「設置新密碼」頁面上輸入任何電子郵件地址,併爲該帳戶設置新密碼。那麼,如何驗證用戶是否擁有設置新密碼的帳戶?
我認爲包含隨機哈希的URL應該作爲參數與新密碼一起發送,因爲密碼只能在哈希匹配時設置。然而,這不起作用,因爲$ _GET ['hash']變量僅存在於從電子郵件鏈接的設置密碼頁面上。只要用戶點擊「提交」,$ _GET ['hash']變量就消失了。
簡單的解決方案是通過URL上的$ _GET ['hash']變量再次傳遞,但是這會爲開發人員創建一個額外的步驟,並且可能會混淆它們。 (我正在創建一個庫,所以我的代碼必須足夠簡單,開發人員才能理解和集成)。
人們以前如何解決這個問題?有些人建議使重置鏈接有時間限制。如果鏈接僅在30分鐘內有效,這將有所幫助,那麼這意味着惡意用戶只能在最近30分鐘內請求重置密碼的情況下更改某人的密碼。但是,這裏仍然存在一個脆弱的窗口,所以它並不完美。
如果需要請諮詢澄清。
謝謝
「*用戶可以輸入此「設置新密碼」頁面上的任何電子郵件地址*「 - 爲什麼?您的「我忘記了我的密碼」邏輯應該查找與輸入的用戶名/電子郵件地址相關聯的帳戶,將鏈接發送到該帳戶的相關電子郵件地址,並且「設置新密碼」表單應自動確定該密碼更改鏈接的帳戶是爲了。 – DCoder
只有合適的用戶才能點擊電子郵件中的鏈接。 – Ibu
爲什麼在重置密碼時要求提供電子郵件?這太可怕了。只需在提交表單時使用哈希查詢! –