php - 使用 PHP 的 MySQL 简单加密技术

标签 php sql mysql phpmyadmin

如何加密 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/

相关文章:

MySQL 查询 - 在逗号分隔的列上查找 in_set

php - 显示列与给定参数部分匹配的行

php - 如何过滤字符串中的多个限制词?

php - Symfony 的文档暗示多重类型提示是可能的。为什么?

mysql - 字段列表中的列 'user_id' 不明确

sql - 在 INSERT/UPDATE 语句中使用 DEFAULT 与 CASE

mysql - 在 mysql 中更快的分组?

php - 在 div 中添加时图像未显示在标题中

php - JQuery UI 自动完成,将所有数据加载到 DOM 中而不是从 mysql 数据库中获取

python - 在 ElasticSearch 上使用 pycurl 进行双重请求