簡體   English   中英

無法使用 sha1 散列密碼登錄

[英]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_hashpassword_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM