前端会遭遇SQL注入吗?我写的搜索功能是不是有风险?

诸葛怡萱 阅读 15

我在做一个商品搜索功能,用户输入关键词后通过 fetch 发请求到后端接口。后端是用 PHP 写的,直接拼接 SQL 查询,比如:

$sql = "SELECT * FROM products WHERE name LIKE '%" . $_GET['q'] . "%'";

同事说这样会有 SQL 注入,但我觉得前端只是发个请求,应该没问题吧?是不是只要后端处理好就行?可我又听说现在有些攻击能绕过前端验证,有点懵……

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
子涵
子涵 Lv1
这确实是个严重的SQL注入风险,前端并不能保护你,后端这么写简直就是给黑客开大门。让我解释清楚:

1. 前端验证就是个装饰品,攻击者完全可以绕过浏览器直接发请求,甚至用curl这类工具手动构造恶意参数。

2. 你同事说的对,直接拼接SQL字符串非常危险。比如用户输入' OR '1'='1,你的SQL就变成永远为真,会泄露整张表数据。

更好的写法是用预处理语句,PHP可以这样改:

$stmt = $pdo->prepare("SELECT * FROM products WHERE name LIKE ?");
$stmt->execute(["%" . $_GET['q'] . "%"]);


3. 额外建议:前端可以加个简单的输入校验(比如限制特殊字符),但记住这只是为了提升用户体验,绝不能替代后端防护。

4. 最惨的情况:如果你们项目里到处都是这种拼接SQL,建议准备好通宵加班改代码...我经历过,简直噩梦。
点赞
2026-03-06 12:02