如何加密 PHP 中的用户密码?
请用初学者能理解的方式解释一下。我已经有了这个示例代码:
$password = "john856";
$encrypt_password = md5($password);
echo $encrypt_password;
如何将其合并到我当前的代码中,该代码不进行任何加密?
<?php
$con = mysql_connect("localhost","root","");
if (!$con) { die('Could not connect: ' . mysql_error()); }
mysql_select_db("koro", $con);
$sql="INSERT INTO users
(LNAME, FNAME, MNAME, UNAME, PW)
VALUES
('$_POST[Lneym]', '$_POST[Fneym]', '$_POST[Mneym]', '$_POST[Uneym]', '$_POST[Pass]')";
if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); }
echo "<script>alert('User added! You can now use the system.')</script>";
mysql_close($con)
?>
最佳答案
让我从更重要的一点开始:
您绝对不能将 $_POST 变量直接传递到查询中。这使您极易受到 SQL injections 的攻击。 .
你至少应该运行 mysql_real_escape_string()在您插入的每个表单值上:
$Lneym = $_POST["Lneym"];
$Lneym_halfway_safe = mysql_real_escape_string($Lneym);
....
$sql="INSERT INTO users
(LNAME, FNAME, MNAME, UNAME, PW)
VALUES
('$Lneym_halfway_safe',
然后您还可以立即合并 md5():
$PW = md5($_POST["PW"]); // no escape_string() needed here,
// the md5 checksum is safe
然后在密码字段中插入'$PW'
。
最好的办法是使用像 PDO 这样的数据库类。其参数化查询功能自动帮助防止 SQL 注入(inject)。也许this tutorial对你有帮助。
鉴于您甚至无法将 md5()
添加到您的代码中(没有个人批评,我们都从那里开始过),我强烈建议您阅读编程基础知识。复制粘贴网络平台的关键安全功能是非常危险的,很可能会以泪水告终。
关于php - 使用 PHP 的 MySQL 简单加密技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2125348/