PHP 中的参数化查询如何防止 MySQL 数据库中的 SQL 注入?

Linda Hamilton
发布: 2024-11-02 07:07:30
原创
340 人浏览过

How can Parameterized Queries in PHP Protect against SQL Injection in MySQL Databases?

用于安全 MySQL 连接的 PHP 参数化查询

SQL 注入仍然是一种持续的安全威胁,可能会危及数据库应用程序中的敏感数据。参数化查询是减轻这种风险的关键技术。然而,正确实现它们不仅需要了解查询本身,还需要了解数据库连接过程。

考虑 PHP 登录页面中的以下代码片段:

<code class="php">$query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'";
$result = mysqli_query($dbc, $query);
$row = mysqli_fetch_array($result);</code>
登录后复制

此代码容易受到SQL 注入,因为用户提供的输入 $userName 和 $userPass 直接包含在查询字符串中。

要实现参数化查询,请将此代码替换为以下内容:

<code class="php">$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($stmt, "ss", $userName, $userPass);
mysqli_stmt_execute($stmt);
$row = mysqli_stmt_fetch($stmt);</code>
登录后复制

在此改进的代码:

  • mysqli_prepare 准备一个可以多次执行的 PDO 语句对象。
  • mysqli_stmt_bind_param 将用户提供的输入绑定到 SQL 查询中的参数化占位符 (?),从而防止SQL 注入。
  • mysqli_stmt_execute 执行准备好的语句。
  • mysqli_stmt_fetch 检索结果行。

请记住加密或散列用户密码以增加安全性。参数化查询以及这些附加措施可确保 PHP 应用程序中安全的 MySQL 数据库交互。

以上是PHP 中的参数化查询如何防止 MySQL 数据库中的 SQL 注入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!