SQL 注入简介
SQL 注入(SQL Injection)是一种通过将恶意的 SQL 语句注入到应用程序的输入字段中,从而操控数据库执行不当操作的攻击手段。这种攻击方式通常发生在应用程序直接将用户输入内容插入到 SQL 查询中,且未经过适当的验证或转义处理的情况下。
搜索型注入
搜索型注入是 SQL 注入的一种,通常发生在用户搜索输入被直接用于数据库查询时。例如,用户输入的搜索词被直接拼接到 SQL 查询语句中,而未经过适当的过滤和处理。
示例场景
假设我们有一个在线商店的搜索功能,它允许用户输入关键字来查找商品。后端的 SQL 查询可能如下所示:
SELECT * FROM products WHERE name LIKE '%user_input%';
如果应用程序直接将用户输入拼接到这个查询中,而没有进行任何验证或转义处理,那么攻击者可以输入类似 ' OR '1'='1
的内容进行 SQL 注入攻击。
代码示例:存在漏洞的查询
下面是一个存在 SQL 注入漏洞的 PHP 代码示例,该代码展示了如何容易遭受搜索型注入攻击。
<?php
// 从用户输入中获取搜索关键词
$user_input = $_GET['search'];
// 构造 SQL 查询
$query = "SELECT * FROM products WHERE name LIKE '%$user_input%'";
// 执行查询
$result = mysqli_query($connection,