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

SQL注入攻击

SQL注入攻击的原理

原理:将SQL命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器,执行恶意的SQL命令

SQL注入攻击的主要原因

SQL注入主要原因是程序员在开发用户和数据库的系统时没有对用户输入的字符串进行过滤、转义、限制或处理不严谨,导致攻击者可以通过精心构造的字符串去非法获取到数据库中的数据。

对于Java数据库连接JDBC而言,SQL注入攻击只对Statement有效,对PreparedStatement是无效的,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构。

SQL注入攻击的两种形式

1.直接注入式攻击法:直接将代码插入到与SQL命令串联在一起,缤纷使得其得以执行的用户用户输入变量。

2.间接的攻击方法:将恶意代码注入要在表中存储或者作为原数据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。

注入攻击的过程

提前终止文本字符串,然后追加一个新命令,由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记“—”来终止注入的字符串。执行时,系统会认为此后语句位注释,故后续的文本将被忽略,不被编译与执行。

SQL攻击的示例:

假如我们有一个users表,里面有两个字段username和password。用sql拼接的方式进行用户验证。比如

"select id from users where username = '"+username +"' and password = '

"  + password +"'" 这里的username和password都是我们存取从web表单获得的数据。

下面我们来看一下一种简单的注入,如果我们在表单中username的输入框中输入

' or 1=1-- ,password的表单中随便输入一些东西,假如这里输入123.

此时我们所要执行的sql语句就变成了

select id from users where username = '' or 1=1--  and password = '123',

我们来看一下这个sql,因为1=1是true,后面 and password = '123'被注释掉了。所以这里完全跳过了sql验证

SQL攻击的防御:

使用预编译语句

绑定变量,攻击者无法改变SQL的结构。不同的编程语言Java、Php有不同的语法

  • 使用存储过程

使用安全的存储过程对抗SQL注入,由于存储过程中也可能存在SQL注入问题,应尽量避免使用动态SQL语句。

  • 检查数据类型

例如,需要输入的是整型,那么,可以判断用户的输入,如果包含非整型,例如,字符串"AND"、“BENCHMARK”等,则不运行sql语句。其他类型,例如,邮箱等可以通过使用正则表达式来进行判断。

  • 使用安全函数

各个厂商都有一些安全函数,例如,微软SQL安全函数

http://www.lryc.cn/news/545912.html

相关文章:

  • 面试常问的压力测试问题
  • 云原生事件驱动架构:构建实时响应的数字化神经系统
  • css3d放置的面板方向不对问题排查
  • K8S学习之基础七:k8s中node污点和pod容忍度
  • python流水线自动化项目教程
  • 机器学习算法——分类任务
  • AJAX复习记录
  • 内网穿透的应用-企业级远程办公方案:NAS部署网页版Linux,HTTPS加密访问全配置
  • 《白帽子讲 Web 安全》之移动 Web 安全
  • CSS_复合选择器
  • 测试工程师Ai应用实战指南简例prompt
  • 贪心人生,贪心算法
  • 【论文阅读笔记】用于恶劣天气条件下的目标检测的IA-YOLO(Image-Adaptive YOLO) | 适合雾天和低光照场景
  • 【Elasticsearch】Set up a data stream 创建data stream
  • redhat无网利用iso搭建本地yum源
  • 我的ChatGPT怎么登不上?
  • 飞机大战lua迷你世界脚本
  • 链表常用技巧和操作总结
  • CSS的列表属性
  • Django 5实用指南(十三)安全性与防护
  • cesium+vue3自定义HTML实体弹窗、加高德路网、防实体漂浮、让用户画圆、鹰眼
  • Go红队开发—编解码工具
  • 计算机毕业设计SpringBoot+Vue.js常规应急物资管理系统(源码+文档+PPT+讲解)
  • thinkphp5对接阿里云ocr试卷切题
  • AI数据分析:用DeepSeek做数据清洗
  • 免费轻巧多功能 PDF 处理工具:转换、压缩、提取一应俱全
  • 基于JavaWeb开发的Java+SpringBoot+vue+element实现物流管理系统
  • 计算机毕业设计SpringBoot+Vue.js华强北商城二手手机管理系统 (源码+文档+PPT+讲解)
  • 实验:k8s+keepalived+nginx+iptables
  • DeepSeek入门学习