做 PHP 开发最怕啥?最怕写的代码被 SQL 注入,数据库直接被人扒光!今天不聊虚的,就分享 2 个能直接复制用的笨办法,新手也能看懂,我现在做项目全靠它。❌ 千万别再干这事:把用户表单内容直接拼到 SQL 里!我刚学 PHP 时就这么写,差点把公司数据库搞崩,现在想起来都后怕。✅ 核心招:预处理语句(直接复制用)简单说就是先把 SQL “骨架” 发给数据库,用户输入的内容单独传,数据库只认数据不认代码,黑客根本钻不了空子。<?php// 连接数据库(替换成你的配置) $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '123456'); // 预处理SQL骨架 $stmt = $pdo->prepare('SELECT * FROM users WHERE username = ?'); // 传入用户输入的真实数据 $stmt->execute([$username]); // 获取结果 $user = $stmt->fetch(PDO::FETCH_ASSOC);?>
✅ 第二招:绝不信用户的原始输入别以为前端加了校验就万事大吉!我踩过这坑:前端限制了输入格式,结果黑客绕开前端直接攻后端,数据全乱了。最简单的办法:要么用正则限制输入格式(比如用户名只准字母数字),要么用 filter_var 过滤:<?php// 过滤用户输入的邮箱(示例) $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); // 过滤XSS攻击字符 $username = htmlspecialchars($_POST['username'], ENT_QUOTES);?>
用 PDO 预处理语句拼 SQL,别直接拼接用户输入
所有用户输入先过滤,再用
这两招看似简单,却能挡住 99% 的 SQL 注入!你平时写 PHP 还遇到过哪些安全坑?评论区说,我下次专门写一篇解决办法。
本文由 AI 辅助整理,仅做技术分享。