我对php安全性相当新,对于我的网站,我是一个注册和登录,我想添加md5他们的密码,但我找不到任何有明确指导需要的地方添加到注册,以及需要添加到登录文件和/或数据库的内容,正如我所说我在网络安全方面对php相当新,所以我需要一些帮助,这里是我在注册表格上的内容:
$error = $user = $pass = "";
if (isset($_SESSION['user'])) destroySession();
if (isset($_POST['user']))
{
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
if ($user == "" || $pass == "")
{
$error = "Not all fields were entered<br /><br />";
}
else
{
$query = "SELECT * FROM members WHERE user='$user'";
if (mysql_num_rows(queryMysql($query)))
{
$error = "Username already taken<br /><br />";
}
else
{
$query = "INSERT INTO members VALUES('$user', '$pass')";
queryMysql($query);
die("<h4>Account created</h4>Please Log in.");
}
}
}
我只需要一个示例或指导我需要做些什么才能使其正常工作。
答案 0 :(得分:4)
我认为你正在寻找盐,然后哈希你的密码。只需将您选择的字符串添加到密码的前面(如果您愿意,最后),然后使用MD5进行散列。
e.g。
$pass = 'mypassword';
$salt = 'S%gh3578'; //anything you want
$pepper = 'w890rrk'; //anything you want
$query = "INSERT INTO members VALUES('$user', md5('".$salt.$pass.$pepper."'))";
queryMysql($query);
这将使用加密的MD5加密将密码存储在数据库中,使用未加密的MD5加密,使用常见密码查找表无法对其进行反转。
要检查密码是否有效,您可以执行类似的操作:
$passToCheck = 'something';
$correctMD5 = (retrieve hash from db)
if($salt.$passToCheck.$pepper == $correctMD5)
{
//valid login
} else {
//login failure
}
答案 1 :(得分:-1)
您可以在插入之前和用户登录时使用md5($ pass),再次md5并检查值是否相同。没有办法de-md5,所以你通常会根据md5数据库值检查md5输入。