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

SQL 注入防护怎么做

一、新手友好版(通俗易操作,核心抓重点)

  1. 别直接拼用户输入到 SQL 里
     
    比如别写 SELECT * FROM user WHERE id='${用户输入的id}',这种写法黑客改输入内容就能篡改 SQL 逻辑;改用「参数化查询」(也叫预编译语句),把输入当 “参数” 而非 SQL 代码的一部分,比如 MySQL 用 PREPARE 语句、Java 用 PreparedStatement,Python 用 cursor.execute(sql, (参数,)),从根源杜绝拼接风险。
  2. 给输入 “设规矩”
     
    比如手机号只允许填 11 位数字、邮箱按邮箱格式校验,用正则表达式过滤非法字符(单引号、分号、OR 1=1 这类),就算黑客想输恶意代码,也会被直接拦截。
  3. 装个 WAF “守门”
     
    不管是云 WAF(阿里云 / 腾讯云 WAF)还是服务器端 WAF,能自动识别含恶意 SQL 片段的请求(比如带 UNION SELECTDROP TABLE 的请求),直接拦在外面,不用自己写复杂规则。
  4. 数据库账号 “少给权限”
     
    应用连接数据库的账号,只给必要权限:比如查数据只给SELECT、加数据只给INSERT,坚决不给DROP(删表)、ALTER(改表)权限,就算被注入,黑客也没法删库。

二、专业落地版(按优先级排序,覆盖全场景)

🔥 优先级最高(根源防护)

  • 强制使用参数化查询 / 预编译语句
     
    所有涉及用户输入的 SQL 操作,必须通过参数化方式执行,禁止任何动态拼接 SQL 的写法(包括拼接后再预编译)。
     
    示例(Python):
    python
     
    运行
     
    # 错误写法(易注入)
    sql = f"SELECT * FROM user WHERE id='{user_input}'"
    cursor.execute(sql)# 正确写法(参数化)
    sql = "SELECT * FROM user WHERE id=%s"
    cursor.execute(sql, (user_input,))
     
     
  • 使用 ORM 框架
     
    MyBatis、Hibernate、Django ORM 等框架会自动做参数化处理,避免手写 SQL 的注入风险;注意 MyBatis 中别用${}(直接拼接),改用#{}(参数化)。

🛡️ 第二层防护(拦截 + 加固)

  • 部署 Web 应用防火墙(WAF)
     
    配置 WAF 的 SQL 注入规则库,拦截含恶意 SQL 特征的请求;同时开启日志审计,及时发现攻击行为。
  • 输入验证与转义
     
    对用户输入做 “白名单校验”(仅允许指定字符 / 格式),而非 “黑名单过滤”(难覆盖所有绕过方式);特殊场景下对输入的特殊字符(如单引号)做转义(辅助手段,不能替代参数化)。
  • 数据库权限最小化
     
    应用账号仅授予业务必需的权限,禁止使用 root/SA 等超级账号连接数据库;生产库禁止外网直连,通过内网 IP + 白名单限制访问。

📌 补充防护(兜底 + 监控)

  • 错误信息脱敏
     
    前端 / 接口返回的错误提示仅展示 “请求失败” 等通用信息,禁止泄露表名、字段名、SQL 语句等细节(避免黑客利用报错信息构造注入语句)。
  • 实时监控与审计
     
    监控数据库慢查询、异常访问日志(如批量查询用户表、高频执行UNION语句),定期做渗透测试,模拟攻击发现漏洞。
  • 禁用数据库危险功能
     
    关闭 SQL Server 的xp_cmdshell、MySQL 的FILE系列函数(如load_fileinto outfile),减少注入后的提权 / 破坏风险。

三、避坑提醒

❌ 别只靠 “过滤特殊字符” 防注入:黑客可通过编码、大小写混合(如UnIoN SeLeCt)绕过过滤,仅能作为辅助;❌ 别依赖 “前端校验”:前端校验可被轻易绕过,必须在后端重复校验;✅ 核心原则:把用户输入当 “数据”,而非 “代码”,始终隔离 SQL 语句与用户输入。
http://www.gsyq.cn/news/164240.html

相关文章:

  • 【Open-AutoGLM技术深度解密】:揭秘下一代自动化大模型推理引擎核心架构
  • 2025年AI已经进化到“灵魂出窍“级别,编程变“感觉“,小白程序员再不学就晚了!
  • 2025年黑龙江大理石瓷砖一线品牌排行榜,新测评精选大理石瓷砖公司推荐 - 工业设备
  • 别再只看薪资了!重新定义AI Agent高薪岗位:2025颠覆认知的隐藏要求与能力地图全公开!
  • 教育科研用途:免费获取高性能TensorFlow镜像访问权限
  • 【AI开发新范式】Anthropic颠覆认知:停止制造“Agent动物园“,通用Agent+Skills才是王炸!
  • TensorFlow镜像中的随机种子控制:保证实验可复现性
  • 郑州西点培训服务找哪家?新测评精选西点培训公司推荐 - 工业品网
  • 还在手动写对话逻辑?Open-AutoGLM自动化方案全面曝光
  • Open-AutoGLM安卓私有化部署教程:如何在离线环境中构建专属AI编程引擎?
  • 运维转岗网安渗透,应该选择什么类型的岗位?大概工作内容是什么
  • 如何通过Dockerfile定制自己的TensorFlow镜像版本
  • 使用TensorFlow镜像进行自动化测试:确保模型稳定性
  • 从入门到精通:Open-AutoGLM提示词优化的6个关键阶段
  • 城市轨道交通新线开通对既有线多维度影响研究——以客流、行车、设备及视频数据为视角
  • 【震惊】原来大模型部署这么简单!一文带你解锁GPU+Docker+VLLM企业级部署,小白也能秒变AI大神!
  • 错过就亏了!Open-AutoGLM手机部署内部资料流出,限时公开
  • 你不知道的Open-AutoGLM隐藏能力:7种高阶用法颠覆开发流程
  • Open-AutoGLM实战案例全曝光:企业级AI系统构建的4大关键路径
  • 2025年河南实力强的西餐培训学院排行:有实力的西餐培训学校推荐 - 工业设备
  • Open-AutoGLM到底有多强?,对比TensorFlow/PyTorch看它如何弯道超车
  • 分组密码SP结构分析
  • CSDN年度总结2025:技术逐梦,砥砺前行
  • Open-AutoGLM为何成为大模型自动化新标杆:9个关键技术细节首次披露
  • 揭秘Open-AutoGLM提示工程:5个你不知道的高效优化策略
  • 从学术研究转向工业落地:选择TensorFlow镜像的五大理由
  • 如何在TensorFlow镜像中启用GPU显存增长选项
  • 避免OOM内存溢出:TensorFlow镜像数据加载最佳实践
  • 权威发布:2025 年中国家装公司十强综合实力大比拼 - 速递信息
  • 程序员必看:大模型产业链全解析与职业发展路径(建议收藏)