查看从用户输入到mysql数据库的散列密码

u7up0aaq  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(248)

我有一个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>

它工作正常,我需要知道如何隐藏在数据库中查看密码。任何帮助都将不胜感激。

rdlzhqv9

rdlzhqv91#

请使用php的内置函数来处理密码安全。如果您使用的php版本低于5.5,那么可以使用 password_hash() 兼容包。

$Pass = password_hash($_POST['pass'], PASSWORD_DEFAULT);

另外,确保数据库可以保存密码
  password text DEFAULT NULL -- set to 'text' type 这个 password_hash() 可以生成一些非常长的文本(当前的默认值是60个字符),因此现在将mysql字段变大将允许所需的长度。其次,php团队正在向方法中添加更多的算法,这意味着散列可以而且将会增长。我们也不想限制用户使用他们选择的密码或口令的能力。最好留点地方让他们改变。

相关问题