2014-04-21 49 views
0

一個簡單的問題..MySQL將無法識別MD5

我想看看MD5密碼是否與MySQL條目相同,但我失敗了atm。 (它的工作原理確定我的離線服務器上,但..)

能否請你讓我知道我在這個查詢做錯了:

SELECT * FROM `users` WHERE `username` = '".trim($_POST['username'])."' AND `password` = '".md5(trim($_POST['password']))."' LIMIT 0,1; 

謝謝!

+0

你做錯了一件事是直接將發佈的數據注入到SQL語句中。 – Pitchinnate

+0

對於初學者而言,您將變量直接注入到查詢中,使您的代碼非常容易受到SQL注入的攻擊。其次,你應該使用準備好的語句並綁定變量。第三,你是否試圖輸出你的查詢並將其直接粘貼到數據庫中以查看錯誤是什麼?想象一下,如果「用戶名」是「admin」或1 = 1 - '。突然間我會以用戶名「admin」的身份登錄,而不知道密碼。涼! – h2ooooooo

+0

您是否收到錯誤? – Pitchinnate

回答

0

正如他們在評論中解釋的那樣,您希望使用Mysqli或MySQL PDO類......我個人使用PDO,它可以在安全性方面提供很多幫助,並且不必太難。

這裏有一個教程,幫助我: http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

如果你想這樣做,你已經張貼的方式,你可以發佈完整的PHP MySQL的發言,我們也許能夠指出你在正確的方向:D

哦,還有一點,你並不是真的不想使用MD5 ......它真的很容易受到彩虹攻擊...嘗試使用鹽與河豚...這裏有一個教程:http://www.the-art-of-web.com/php/blowfish-crypt/

+0

Blowfish Crypt教程很混亂 - 「雖然我查了一下,人們似乎建議使用password_hash()而不是 – user3465843

+0

看着人們學習很有趣...而且我也學到了一些新的東西:D ...我可能會交換到'password_hash()',gunna讀入它一點,因爲有一些評論關於它的早期版本是不穩定的 –