试图破解我的密码,但没有成功


Trying to hash my passwords but with no success

我对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.");
        }
    }
}

我只需要一个例子或一个很好的指南,说明我需要做什么才能让它正常工作。

我认为您正在寻找salt,然后散列您的密码。在使用MD5进行哈希之前,只需将您选择的字符串添加到密码的前面(如果您愿意,也可以添加到末尾(。

例如

$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
}

例如,您可以在插入之前使用md5($pass(,当用户登录时,再次使用md5并检查值是否相同。没有办法进行de-md5,所以您通常会根据md5DB值检查md5输入。