加密表单数据MD5
Encrypt Form Data MD5
我有以下表格:
<form method="post" enctype="application/x-www-form-urlencoded" action="logincheck.php" autocomplete="off" >
<table>
<tr>
<td><label for="username">Username</label></td>
<td><input type="text" name="username"></input></td>
</tr>
<tr>
<td><label for="password">Password</label></td>
<td><input name="password" type="password"></input></td>
</tr>
<tr>
<td><input type="submit" value="Submit"</input></td>
</tr>
</table>
</form>
并且 loginsuccess.php 有以下检查(还有更多 PHP 代码,但这是相关部分):
$username = mysqli_real_escape_string($connect, $_POST['username']);
$password = mysqli_real_escape_string($connect, $_POST['password']);
$encrypted_mypassword=md5($password);
$query = "SELECT * FROM students WHERE username = '".$username."' AND password = '".$encrypted_mypassword."'";
$result = $connect->query($query);
用户应该被带到另一个页面(没有新的:
$encrypted_mypassword=md5($password);
但是它们被发送到错误页面并且无法正常工作。有什么想法吗?
问题似乎是您将密码存储在数据库中的 纯文本 中。您需要存储密码的 散列 。
请记住,如今 MD5 不是用于密码散列的合适算法,尤其是如果它还未加盐时。它太快了,可以相对容易地进行暴力搜索。请改用 password_hash()
。
我有以下表格:
<form method="post" enctype="application/x-www-form-urlencoded" action="logincheck.php" autocomplete="off" >
<table>
<tr>
<td><label for="username">Username</label></td>
<td><input type="text" name="username"></input></td>
</tr>
<tr>
<td><label for="password">Password</label></td>
<td><input name="password" type="password"></input></td>
</tr>
<tr>
<td><input type="submit" value="Submit"</input></td>
</tr>
</table>
</form>
并且 loginsuccess.php 有以下检查(还有更多 PHP 代码,但这是相关部分):
$username = mysqli_real_escape_string($connect, $_POST['username']);
$password = mysqli_real_escape_string($connect, $_POST['password']);
$encrypted_mypassword=md5($password);
$query = "SELECT * FROM students WHERE username = '".$username."' AND password = '".$encrypted_mypassword."'";
$result = $connect->query($query);
用户应该被带到另一个页面(没有新的:
$encrypted_mypassword=md5($password);
但是它们被发送到错误页面并且无法正常工作。有什么想法吗?
问题似乎是您将密码存储在数据库中的 纯文本 中。您需要存储密码的 散列 。
请记住,如今 MD5 不是用于密码散列的合适算法,尤其是如果它还未加盐时。它太快了,可以相对容易地进行暴力搜索。请改用 password_hash()
。