php - 希望散列从用户输入到 mysql 数据库的密码

标签 php html css mysql

我有一个 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 的 built-in functions 来处理密码安全。如果您使用的 PHP 版本低于 5.5,您可以使用 password_hash() compatibility pack .

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

此外,确保数据库可以保存密码

密码文本 DEFAULT NULL -- 设置为“文本”类型

password_hash() 可以生成一些非常长的文本(当前默认为 60 个字符),因此现在增大 MySQL 字段将允许所需的长度。其次,PHP 团队正在向该方法添加更多算法,这意味着哈希可以而且将会增长。我们也不想限制我们的用户使用他们选择的密码或密码的能力。最好为更改留出空间。

关于php - 希望散列从用户输入到 mysql 数据库的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49920599/

相关文章:

php - 如何使用 php curl 进行双向/双向身份验证?

javascript - 将 html 或 div 的内容加载到 div 中

Javascript - `$("a[href* ='video' ]")` 的含义

javascript - 动画两个元素从垂直对齐到水平对齐

jquery - 从 Advanced News Ticker 中删除右边框

php - 从 Symfony/Twig 中的覆盖版本访问父模板

php - 当用户未登录时,我如何在 PHP 上计算每小时的数字?

php - XMLRPC 捕获脚本执行错误并在响应中显示它们

java - JSP 页面无法访问/查找 CSS、图像等相关资源

html - 为什么在包含 span 时悬停不起作用