保护数据库免受MySQL注入的3大方法

SQL 注入是最流行的黑客技术之一。它涉及为恶意意图注入 SQL 代码,例如破坏数据库或获取私人信息。例如,黑客可以将 SQL 代码注入网站表单,以从数据库中检索用户名和密码列表。这种攻击可能会威胁到您用户的敏感个人信息——想象一下黑客可以获得的所有数据!这是最简单的 SQL 注入形式之一:用户输入。

保护数据库免受MySQL注入的3大方法-南华中天

幸运的是,SQL 注入并不难预防。这种黑客技术并不复杂,可以很容易地避免实施不同的代码解决方案。这只是另一种很容易被遗忘的安全措施。

即使是流行的游戏Fortnite 也存在一个漏洞,该漏洞可能导致 SQL 注入攻击,从而使黑客能够接管游戏帐户。Synopsys 的技术布道师 Tim Mackey 表示:“SQL 注入和 XSS 是 OWASP 前 10 名中的常年项目”。你的代码是防 SQL 注入的吗?您是否遭受过 SQL 注入安全攻击?继续阅读以找到解决方案!

保护数据库免受 MySQL 注入的 3 大方法

1. 使用 MySQLi 转义字符

此方法允许数据库将 SQL 注入视为文本,而不是代码。这将避免黑客代码的任何恶意行为。这个想法是使数据库对文本进行转义并将其转换为字符。以下示例适用于简单的网站表单。此解决方案由Multimedia Tutorials YouTube 频道提供:

首先设置变量等于实际数据。有关名字字段,请参见下面的示例:

 $first = $_POST['first'];

然后,插入以下 PHP 函数:

mysqli_real_escape_string ()

在该括号内,您将添加两个不同的参数:与数据库的数据库连接和用户在表单中传递的数据。代码将与此类似:

$first = mysqli_real_escape_string ($conn, $_POST['first']);

其中 $conn 是您与数据库的数据库连接。然后,对其余字段执行相同的步骤。您可以轻松复制和粘贴 mysqli_real_escape_string ($conn),以加快该过程。

2- 使用 Web 应用程序防火墙

Web 应用程序防火墙 (WAF) 通过检测来自您的网站流量的可疑活动,作为附加的安全层。根据一组特定的规则过滤掉非法流量。从技术上讲,它会检查进入您网站的 HTTPS 请求。由于它位于 DNS 级别,因此如果它检测到任何恶意活动,它不会让它进入数据库。

保护数据库免受MySQL注入的3大方法-南华中天

如果 Web 应用程序防火墙检测到可疑行为,您可以选择如何继续。例如,您可以要求用户提交验证码,或自动阻止可疑 IP 地址。实施 Web 应用程序防火墙还将帮助您防止跨站点脚本 (XSS) 和跨站点伪造 (CSRF)。这听起来像是完美的解决方案,但请记住,这不是 100% 防故障的方法。仍然有一些方法可以绕过 WAF。即便如此,我还是强烈推荐它。

3. 使用预处理语句保护数据库免受 MySQL 注入

此方法使用占位符而不是实际变量,这些变量被发送到数据库、被解析并最终在 SQL 语句中被替换。请注意,数据库也不会将代码视为代码,而是将其视为字符。

此过程涉及 3 个步骤:创建模板、创建准备好的语句和准备准备好的语句。请参阅以下所有这些步骤的详细信息:

创建模板

首先从数据库中选择数据。为此,请使用用户 ID 等于占位符名称的 select 语句。

创建准备好的语句

在括号内插入准备好的语句,包括与数据库的连接。

准备一份准备好的声明

为准备好的语句插入一个 MySQLi 函数,并通过对模板进行测试来检查该语句是否可以工作。您可以通过插入 IF 语句来做到这一点,第一个条件是准备好的语句,以 $stmt 作为参数,第二个参数是 SQL 模板。记住要检查失败而不是成功。您可以通过在语句前插入感叹号并回显该语句已失败来执行此操作。

然后,通过将绑定参数添加到占位符来插入 ELSE 语句。在括号内添加三个参数:后跟逗号的准备语句、模板中占位符的指示符以及要插入而不是占位符的实际数据。您可以在多媒体教程中看到完整的解决方案。