如何散列密码字段

时间:2014-11-21 13:11:02

标签: php mysql hash sha1 m

购买了一个允许用户构建网站的php软件。但我支付的那个人并没有建立一个注册表格。我有足够的危险做基本的编码。但我觉得这已超过我的技能水平。我创建的表单很好地插入到mysql数据库中,但它会让使用此表单的新用户登录,因为密码字段不是哈希值。

HMTL注册表格:

<form action="input.php" method="post" class="pcss3f pcss3f-type-hor">
            <header>Fillout the below to join.</header>

            <section class="state-normal">
                <label for="">First Name</label>
                <input type="text" name="first_name"/>
                <i class="icon-user"></i>
            </section>

            <section class="state-normal">
                <label for="">Last Name</label>
                <input type="text" name="last_name"/>
                <i class="icon-user"></i>
            </section>

            <section class="state-normal">
                <label for="">Email</label>
                <input type="email" name="email"/>
                <i class="icon-envelope"></i>
            </section>

            <section class="state-normal">
                <label for="">Password</label>
                <input type="password" name="password"/>
                <i class="icon-key"></i>
            </section>

            <footer>
                <button type="button" onclick="window.location = 'index.html'">Back</button>
                <button type="submit" class="color-blue">Submit</button>
            </footer>
        </form>

和php脚本:

<?php
$con = mysql_connect("localhost","name","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("instantw_builder", $con);


$sql="INSERT INTO users (first_name, last_name, username, email, password)
VALUES
('$_POST[first_name]','$_POST[last_name]','$_POST[email]','$_POST[email]','$_POST[password]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con)
?>

我需要做什么来散列密码字段?

1 个答案:

答案 0 :(得分:-2)

您可以通过多种方式对密码进行哈希处理,有些方法比其他方法更好。我建议使用PHP内置的SHA1哈希函数。

$hash_password = sha1($_POST[password]);

然后,您希望将此密码存储在数据库中。

当用户登录时,您希望哈希他们输入的密码并检查两个哈希是否匹配。

为了提高安全性,我建议在所有密码的末尾添加一个字符串(只有您自己知道),以限制保留散列的成功。

此表单还有其他与SQL注入数据库漏洞有关的问题。请在此处阅读:http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php