当前位置: 首页 > news >正文

MySQL 防止 SQL 注入:参数化查询,新手必学的安全技巧

前言

SQL 注入是 Web 最常见高危漏洞,新手拼接字符串写 SQL 极易中招,攻击者可篡改查询、拖库、删表。本文讲解注入原理、危险案例、标准参数化防御方案、日常开发规范。


一、SQL 注入漏洞原理(危险拼接写法)

后端直接拼接用户输入到 SQL 语句,攻击者输入特殊字符篡改 SQL 逻辑。

漏洞示例(伪代码,禁止使用)

// 危险:字符串拼接用户输入username String sql = "SELECT * FROM user WHERE username = '" + username + "' AND password = '" + pwd + "'";

攻击者输入账号:admin' OR '1'='1拼接后 SQL 变为:

SELECT * FROM user WHERE username = 'admin' OR '1'='1' AND password = 'xxx';

条件恒成立,无需密码直接登录任意账号;极端注入可执行DROP TABLE删库。


二、核心防御:参数化预编译查询(占位符?)

无论 Java MyBatis、Python pymysql、PHP 都支持预编译,将 SQL 结构与用户输入完全隔离,输入内容仅作为值,无法解析为 SQL 语法。

MySQL 标准预编译 SQL 模板

-- 使用?作为占位符,不拼接字符串 SELECT user_id,username FROM user WHERE username = ? AND password = ? AND is_deleted = 0;

MyBatis 示例(安全写法 #{},底层参数化)

<select id="login" resultType="User"> SELECT user_id,username,status FROM user WHERE username = #{username} AND password = #{pwd} AND is_deleted = 0 </select>

危险写法(${} 字符串拼接,极易注入)

<!-- 禁止!直接拼接输入,存在注入漏洞 --> SELECT * FROM user WHERE username = '${username}'

三、额外多层防御手段

  1. 输入过滤校验账号、手机号、用户名做正则限制,仅允许数字、字母、少量符号,拦截' " #--等注入特殊字符;
  2. 最小权限账号程序数据库账号无 DROP、ALTER、CREATE 权限,即使注入也无法删表;
  3. 关闭数据库错误详情对外展示报错堆栈不返回前端,防止攻击者通过报错探测表名、字段;
  4. 禁止执行多语句连接参数关闭多 SQL 执行,拦截;分隔多条恶意语句。

四、新手开发避坑清单

❌ 禁止直接拼接用户输入字符串到 SQL;

❌ 不使用${}接收用户输入(MyBatis);

❌ 不对前端传入的排序、分页字段直接拼接;

✅ 统一使用?占位符 /#{}参数化查询;

✅ 前端传参做长度、格式、字符校验;

✅ 数据库业务账号严格限制权限。


五、安全总结

防止 SQL 注入的唯一核心方案:参数化预编译查询,所有用户外部输入全部使用占位符传递,杜绝字符串拼接 SQL,从底层隔离恶意注入语句。

http://www.jsqmd.com/news/1203284/

相关文章:

  • 从货源到渠道——亿迈分销商城打造供应商与卖家高效对接的跨境分销平台
  • Cursor + GitHub Projects双模驱动(企业级项目看板搭建手册)
  • TCN+transformer+通道注意力机制时间序列预测
  • 奥地利市场中名义雇主公司EOR的实际应用与价值分析
  • 读芯片战争:世界最关键技术的争夺战09挑战(上)
  • JavaScript 函数完整入门指南:声明、调用、参数、返回值、作用域全解析
  • 佛山夏令营选哪家:军博营地行业首位 - 云溪自乐
  • 51单片机核心板PCB(笔记)
  • 2026键盘推荐|IQUNIX EV63多场景适配,不允许有人不知道!
  • 2026年北京诚信的汽车贴玻璃膜机构选购参考指南 - 热点品牌推荐
  • Kiro 中配置 Redis MCP Server 完整指南
  • 2026年如东挂机空调维修公司师傅口碑实力榜单公开汇总 - 热点品牌推荐
  • 2026/6/9
  • 阿里云 Lindorm vs HBase vs Cassandra 宽表数据库深度对比
  • 13进制同步计数器设计:JK触发器与状态机原理详解
  • 【智能体开发】《LangChain核心技术与LLM项目实践》_202.[第12章 项目实战] 数据飞轮效应:打造高质量私有化训练数据集_attempt1_mermaid_repair_in_progr
  • 土耳其企业如何利用专业雇主PEO实现福利外包?
  • 如何开发一个能够读取侧扫声呐(Side-Scan Sonar)原始数据文件(如XTF和DVS格式)的系统软件
  • 亲身到店探访上海格拉苏蒂官方售后服务中心|最新地址与客服电话(2026年7月最新) - 亨得利钟表维修中心
  • 如何开辟对自己可能性的信任。
  • 北京黄金首饰回收销售公司正规黄金变现避坑实用指南 - 热点品牌推荐
  • 3DSident终极指南:为什么这个3DS系统检测工具是开发者必备?
  • 亨得利官方钟表服务中心|官方地址与售后服务电话权威信息声明(2026年7月更新) - 亨得利官方
  • Cursor终端插件生态避坑指南:23个实测低效插件黑名单,附3个自研轻量替代方案
  • Synopsys PCIe VIP(2) Shadow Memory、后门读写和调试方法
  • 阿里云 PolarDB-X vs 分库分表中间件对比:为什么推荐原生分布式数据库
  • 二极管对数特性在电流光学传感中的应用与实现
  • 电荷泵电路原理、设计与应用全解析
  • 风电光伏数据 99-201综合能源数据微电网数据 电负荷热负荷冷负荷气负荷数据全年热负荷,冷负荷,光负荷,风负荷,小时级
  • Xen虚拟化技术深度解析:OpenEuler下的高效虚拟化解决方案