我最近開始學習PHP,並試圖創建一個安全的登錄遵循本指南http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL。無法登錄到我的安全登錄腳本PHP和MySQL
除了login(),一切似乎都適用於我。我調整了一下。 我把一些回聲嘗試針點錯誤,它返回的密碼錯誤比較IF:
該函數返回:登錄功能錯誤1
位於功能登錄包括/功能。 php:
$password = hash('sha512', $password . $salt);
if ($db_password == $password) {
echo "Password is correct!";
sha512.js是從這裏pajhome.org。 uk/crypt/md5/sha512 .html, 以及上述WikiHow的表單。
連接是不是一個問題,我使用相同的連接插入到MySQL,它的工作原理。
感謝您對我的問題的關注,如果我沒有透露足夠的信息請諮詢。
編輯:刪除了很多的代碼,因爲@SeanWM評論我不應該指望沒有人會通過所有的代碼。
@Robert Rozas謝謝你的幫助。密碼確實不匹配。 輸出是:
登錄功能錯誤1個c2d872cb4c6a1b3c22ce35fb9dc0dfca14aa6d48 VS c2d872cb4c6a1b3c22ce35fb9dc0dfca14aa6d48cc2e8c3dcf02c87a3dfb7e3fec2a098b932c11655960e43bb89af058220ff8d75c666fe57ef7206b74d5f9af
請看看密碼是如何構建的:
它從寄存器形式的.js:
// Add the new element to our form.
form.appendChild(p);
p.name = "p";
p.type = "hidden";
p.value = hex_sha512(password.value);
然後通過php:
$password = filter_input(INPUT_POST, 'p', FILTER_SANITIZE_STRING);
// Create a random salt
$random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));
// Create salted password
$password = hash('sha512', $password . $random_salt);
然後插入到MySQL中。如果你能再請指出我正確的方向,我將不勝感激。
編輯2:感謝來自@Second Rikudo輸入它去掉雙散列
但是從二Rikudo的意見,光「SHA512是不安全的」 和@tadman後工作「那教程是令人擔憂不完整,並使用有害的不良做法「 我決定修改代碼利用https://github.com/ircmaxell/password_compat 第二Rikudo建議。
爲了讓你知道,我甚至都不會理解這一點。請不要發佈您的所有代碼,並要求我們修復它。嘗試縮小問題的範圍,以便更具體一些。你應該閱讀[this](http://stackoverflow.com/help/how-to-ask)。 – SeanWM
@SeanWM你和其他18位觀衆在評論時=) – MonkeyZeus
如果你不能登錄,那麼我猜它確實很安全。 –