【发布时间】:2018-04-19 12:00:38
【问题描述】:
我有一个 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>
它工作正常我需要知道如何在数据库中隐藏密码。任何帮助将不胜感激。
【问题讨论】:
-
请不要自行推出密码哈希方案。 PHP 提供password_hash() 和password_verify() 请使用它们。这里有一些good ideas about passwords。如果您使用的是 5.5 之前的 PHP 版本there is a compatibility pack available here。
-
在散列之前不必escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。
-
如果某个答案解决了您的问题,请考虑接受该答案。以下是meta.stackexchange.com/questions/5234/… 然后返回此处并对勾号/复选标记执行相同操作直到它变为绿色的方法。这通知社区,找到了解决方案。否则,其他人可能会认为问题仍然悬而未决,可能想要发布(更多)答案。您将获得积分,并鼓励其他人帮助您。 欢迎来到 Stack!
-
“隐藏密码”是什么意思?