[英]PHP - login-function using sha1 hashed password, can't get it to work
[英]Can't Login With sha1 Hashed password
我在注冊時使用 sha1 來散列密碼,這是其中的一段代碼:
$password = sha1 ($_POST['password']);
$query = "INSERT INTO admin (forename,surname,email,securityq, securitya,password) VALUES ('$forename','$surname','$email','$securityq','$securitya','$password')";
這是我在登錄表單中的代碼:
$email = $_POST['email'];
$password = sha1($_POST['pass']);
$query = mysql_query ("SELECT * FROM admin WHERE email = '$_POST[email]' AND password = $password ");
這不會讓我仍然登錄,我的“無效登錄憑據”是嘗試登錄的唯一結果。
您需要在選擇之前散列輸入密碼
$email = $_POST['email'];
$password = md5($_POST['pass']);
$query = mysql_query ("SELECT * FROM admin WHERE email = '$_POST[email]' AND password = '$password'");
在將密碼與數據庫中的密碼進行比較之前,只需對密碼進行哈希處理。
$email = mysql_real_escape_string($_POST['email']);
$password = md5($_POST['pass']);
$query = mysql_query ("SELECT * FROM admin WHERE email = '$email' AND password = '$password'");
..並且不要忘記轉義您的輸入!
您應該考慮使用password_hash
和password_verify
而不是 md5,因為 md5 不再安全。
在請求之前進行哈希處理。
$email = $_POST['email'];
$password = md5($_POST['pass']);
$query = mysql_query ("SELECT * FROM admin WHERE email = '$_POST[email]' AND password = '$_POST[pass]' ");
還有一個建議:你應該在寄存器中添加一個鹽,比如:
$password = md5 ($_POST['password'].'mysalt123465');
$query = "INSERT INTO admin (forename,surname,email,securityq, securitya,password) VALUES ('$forename','$surname','$email','$securityq','$securitya','$password')";
所以用蠻力破解傳球更難。
在安全性方面, sha1
優於md5
。
在比較之前使用md5()函數散列您的密碼。
替換以下行:
$password = $_POST['pass'];
和:
$password = md5($_POST['pass']);
這應該可以解決您的問題。 Bdw 我想建議你使用phpass庫。
對於密碼,請使用password_hash()
因為md5(), sha1(), sha256()
被認為是弱鹽並且很容易被破解
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.