我有一个HTML注册表单,供用户注册一个站点,该站点将信息从表单发送到mysql数据库以供用户登录验证。我有一个输入框,允许用户输入varchar密码,然后将其发送到网站,我的问题是它不安全,因为一旦输入密码它发送到数据库,任何人都可以看到它。我希望尽可能哈希变量。
$Name = $_POST['Name'];
$Age = $_POST['Age'];
$Location = $_POST['Location'];
$Goal = $_POST['Goal'];
$User = $_POST['user'];
$Pass = $_POST['pass'];
$sql = "INSERT INTO Clients (Name, Age, Location, Goal, Pass, User)
VALUES ('$Name', '$Age', '$Location', '$Goal', '$Pass', '$User')";
if ($conn->query($sql) === TRUE) {
echo "Thanks for registering!! You can now attempt to log in";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}$conn->close();
HTML表单:
<form class="form-horizontal" name="form1" method="POST"
action="register.php">
<h3> Enter Name: </h3>
<input type="text" name ="Name"/>
<h3> Enter Age:</h3>
<input type="text" name="Age" />
<h3> Enter Location: </h3>
<input type="text" name="Location" />
<h3> Goal </h3>
<input type="text" name="Goal" />
<h3> Create Username : </h3>
<input type="text" name="user" />
<h3> Create password: </h3>
<input type ="password" name="pass" />
<input type="submit" value="Register" />
</form>
它工作正常我需要知道如何在数据库中隐藏密码。任何帮助将不胜感激。
答案 0 :(得分:5)
请使用 PHP的built-in functions 来处理密码安全问题。如果您使用的PHP版本低于5.5,则可以使用password_hash()
compatibility pack。
$Pass = password_hash($_POST['pass'], PASSWORD_DEFAULT);
此外,请确保数据库可以保存密码
password text DEFAULT NULL -- set to 'text' type
password_hash()
可以生成一些非常冗长的文本(当前默认值为60个字符),因此现在使MySQL字段变大将允许所需的长度。其次,PHP团队正在为该方法添加更多算法,这意味着哈希可以并且将会增长。我们也不想限制用户使用他们选择的密码或密码的能力。最好为变化留出空间。