购买了一个允许用户构建网站的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)
?>
我需要做什么来散列密码字段?
答案 0 :(得分:-2)
您可以通过多种方式对密码进行哈希处理,有些方法比其他方法更好。我建议使用PHP内置的SHA1哈希函数。
$hash_password = sha1($_POST[password]);
然后,您希望将此密码存储在数据库中。
当用户登录时,您希望哈希他们输入的密码并检查两个哈希是否匹配。
为了提高安全性,我建议在所有密码的末尾添加一个字符串(只有您自己知道),以限制保留散列的成功。
此表单还有其他与SQL注入数据库漏洞有关的问题。请在此处阅读:http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php