我正在使用PHP和Mysql。我想知道如何使用MD5發送密碼散列,並希望在用戶嘗試登錄時檢查它。我嘗試過,但無法正常工作。如果有人知道如何去做,請給我提供代碼。如何在用戶註冊和登錄系統中實現MD5散列?
回答
//Register:
$the_magical_salt = "everybody_is_obsessed_with_these_days$3^^2)(%=-"; // Even_though_md5_shouldnt_be_used
mysql_query('insert into users values (NULL,'.$filtered_username.','.md5($password.$the_magical_salt).');');
//Login:
$res = mysql_query('select password from users where username = '.$filtered_username);
$res = mysql_fetch_array($res);
if(md5($_POST['password'].$the_magical_salt) == $res[0]) echo "Yeah, you're welcome.";
else echo "Wrong password sugar";
除了使用md5()函數兩次以外,沒有太多內容。
您應該使用並存儲鹽 - 一個隨機數 - 以防止對密碼進行離線哈希攻擊。另外,MD5作爲哈希機制還不夠。它不會被像布魯斯·施奈爾這樣的人推薦(並且現在還沒有被推薦多年)。 – 2010-07-22 02:40:17
+1,因爲我使用了類似的錯誤密碼。哦,憤怒的電子郵件 – 2010-07-22 02:44:24
@Robus - 如果你打算使用鹽,它應該是加密唯一的每個用戶,並將密碼存儲在數據庫中,而不是在PHP代碼中進行硬編碼。 – 2010-07-22 02:52:19
md5
不太適合這個目的。閱讀this article以瞭解最新情況,但簡短版本是您應該使用bcrypt
來代替。 Google快速顯示PHPass聲稱支持bcrypt
。
更新:由於@ Dragontamer5788在評論中指出,scrypt
甚至比理論上的bcrypt
更好。作者擅長加密技術,但請注意,此時的評論數量少於現實世界的曝光量,而不是bcrypt
。我可能仍會選擇它,但它不像md5
上的bcrypt
。
PHP 5.3+支持BCrypt in它的「crypt」功能,而PHP 5.2及更早的版本可以通過PHP Suhosin Patch(它實現了BCrypt到PHP)。技術上說,「scrypt」比BCrypt更好,因爲它存在內存約束和CPU約束。但是BCrypt是目前最廣泛使用的密碼功能,不妨直接使用它,直到好的scrypt實現存在爲止,這個答案需要更多upvotes – Dragontamer5788 2010-12-01 20:38:36
沒有更多的信息,這將是很難幫助你,但我相信你想要的是Digest Authentication。
下面是一個例子(實施例具體#7)從PHP文檔:http://php.net/manual/en/features.http-auth.php
注意,此類型的認證不防止對人在中間人攻擊。例如,如果某人正在嗅探受害者網絡上的流量,則攻擊者可以簡單地使用消化的用戶名/密碼組合重新播放該請求,並且您的PHP腳本會高興地將攻擊者認證爲受害者。
- 1. 登錄和註冊系統
- 2. 註冊和登錄系統
- 3. 登錄系統/註冊用戶
- 4. 如何實現登錄和註冊?
- 5. 如何實現Facebook登錄和註冊
- 6. PhP登錄/註冊系統
- 7. JDBC登錄/註冊系統
- 8. 使用php和md5登錄並註冊
- 9. 登錄/註冊系統與PHP和MySQL
- 10. Rails3中的註冊/登錄系統
- 11. 登錄註冊在android系統
- 12. 如何使用django製作註冊和登錄系統?
- 13. 使用cookie在Rails中實現一個簡單的註冊/登錄系統
- 14. MD5鹽登錄系統
- 15. 用戶登錄會話超時註銷OOP登錄/註冊系統
- 16. 我如何開發註冊和登錄系統jquery mobile
- 17. Android Studio登錄/註冊系統構想
- 18. PHP OOP登錄/註冊系統
- 19. PHP OOP登錄/註冊系統
- 20. 用Javascript註冊用戶註冊登錄
- 21. 如何在Android Studio中使用SQLite編寫註冊和登錄系統?
- 22. CodeIgniter登錄系統使用md5()
- 23. 擁有現有的登錄/用戶系統,想知道如何在用戶註冊時創建文件夾
- 24. Symfony2:如何實現自定義用戶登錄和註冊 - 擺脫FOSUSerBundle
- 25. 如何在Windows Phone 8中實現登錄/註冊流程
- 26. 如何在php和javascript下實現自動登錄系統?
- 27. 用戶註冊/登錄?
- 28. 批處理文件中的登錄和註冊系統
- 29. 登錄和註冊系統問題。接收和錯誤
- 30. 實現登錄/註冊功能
首先,值得注意的是MD5不加密,它是一種散列或摘要算法。當你說「發送密碼在md5中加密」你的意思是在用戶的請求到服務器,或從你的PHP文件到MySQL? – 2010-07-22 02:38:42
Robus說得對,但如果你想保存Hazel,你可以使用這個PHP身份驗證類http://www.phpclasses.org/package/6174-PHP-Manage-registrations-and-authenticate-users.html – Pablo 2010-07-22 02:39:36
它可能是我對挑選單詞很挑剔,但你在哪裏發送哈希密碼?另外,如果你不使用鹽,你應該。此外,您可能還想考慮更安全的哈希函數。 – Slartibartfast 2010-07-22 02:51:14