我的编程空间,编程开发者的网络收藏夹
学习永远不晚

sql注入的原理是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

sql注入的原理是什么

这篇文章主要介绍了sql注入的原理是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1. 首先了解SQL注入的原理:

  SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.(来源于百度)

  也就是说网站页面包含与数据库交互的部分(例如新闻网站的查找功能),而当在网站输入数据信息,数据信息被程序化后传入数据库执行的过程中,网站的开发人员没有对这些传入数据库的相应数据做安全处理(比如过滤特殊字符、编码等),导致黑客可以将恶意代码(也就是包含非法SQL语句的SQL命令)通过网站前段传入数据库,并在数据库中执行这些具有黑客目的的SQL语句,从而造成数据库信息泄露、损坏等后果。

2. SQL注入的一般分类

按照注入点类型来分类

(1)数字型注入点

  许多网页链接有类似的结构 http://www.example.com/12.php?id=1 基于此种形式的注入,一般被叫做数字型注入点,缘由是其注入点 id 类型为数字,在大多数的网页中,诸如 查看用户个人信息,查看文章等,大都会使用这种形式的结构传递id等信息,交给后端,查询出数据库中对应的信息,返回给前台。这一类的 SQL 语句原型大概为 select * from 表名 where id=1 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where id=1 and 1=1

(2)字符型注入点

  网页链接有类似的结构 http://xwww.example.com/users.php?user=admin 这种形式,其注入点 user 类型为字符类型,所以叫字符型注入点。这一类的 SQL 语句原型大概为 select * from 表名 where user='admin' 值得注意的是这里相比于数字型注入类型的sql语句原型多了引号,可以是单引号或者是双引号。若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where user='admin' and 1=1 ' 我们需要将这些烦人的引号给处理掉。

(3)搜索型注入点

   这是一类特殊的注入类型。这类注入主要是指在进行数据搜索时没过滤搜索参数,一般在链接地址中有 "keyword=关键字" 有的不显示在的链接地址里面,而是直接通过搜索框表单提交。此类注入点提交的 SQL 语句,其原形大致为:select * from 表名 where 字段 like '%关键字%' 若存在注入,我们可以构造出类似与如下的sql注入语句进行爆破:select * from 表名 where 字段 like '%测试%' and '%1%'='%1%'

3. 如可判断是否存在SQL注入(小白总结,仅供参考)

简单点讲就是:

   所有的输入只要和数据库进行交互的,都有可能触发SQL注入

  SQL注入按照数据提交的方式可分为:

  (1)GET 注入:提交数据的方式是 GET , 注入点的位置在 GET 参数部分。比如有这样的一个链接http://xxx.com/news.php?id=1 , id 是注入点。

  (2)POST 注入:使用 POST 方式提交数据,注入点位置在 POST 数据部分,常发生在表单中。

  (3)Cookie 注入:HTTP 请求的时候会带上客户端的 Cookie, 注入点存在 Cookie 当中的某个字段中。

  (4)HTTP 头部注入:注入点在 HTTP 请求头部的某个字段中。比如存在 User-Agent 字段中。严格讲的话,Cookie 其实应该也是算头部注入的一种形式。因为在 HTTP 请求的时候,Cookie 是头部的一个字段。

   根据提交方式分类后,你会发现SQL注入最长发生的位置在链接地址、数据参数、cookie信息以及HTTP请求头等位置。

  了解了可能存在SQL注入的位置,然后我们需要判断在这些位置上是否能够触发SQL注入,最简单的方式就是在相应位置输入and 1=1 (以及and 1=1 的变换形式)来判断。对于不同的注入点类型,比如字符型需要适当添加单引号,而对于数字型的注入点则不需要。

4. SQL注入的高级分类(按照执行效果分类)

  (1)基于布尔的盲注:即可以根据返回页面判断条件真假的注入。

  (2)基于时间的盲注:即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。

  (3)基于报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

  (4)联合查询注入:可以使用union的情况下的注入。

  (5)堆查询注入:可以同时执行多条语句的注入。

  (6)宽字节注入:利用gbk是多字节的编码,两个字节代表一个汉字

感谢你能够认真阅读完这篇文章,希望小编分享的“sql注入的原理是什么”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

sql注入的原理是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mybatis防止sql注入原理是什么

这篇文章主要讲解了“Mybatis防止sql注入原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis防止sql注入原理是什么”吧!Mybatis防止sql注入原理SQL 注
2023-06-22

spring依赖注入的原理是什么

Spring依赖注入的原理是通过IOC(Inversion of Control)容器来实现的。IOC容器是Spring框架的核心,它负责创建对象、管理对象的生命周期以及解决对象之间的依赖关系。在IOC容器中,对象的依赖关系不再由对象自身管
2023-09-29

angular依赖注入的原理是什么

Angular的依赖注入(Dependency Injection)是一种设计模式,用于管理组件之间的依赖关系。它的原理是通过将组件所需的依赖项作为参数传递给组件的构造函数来实现。具体来说,Angular使用一个注入器(Injector)来
2023-09-21

php依赖注入的原理是什么

PHP依赖注入的原理是通过将一个对象的依赖关系通过构造函数、方法参数或者setter方法的方式进行传递。依赖注入的目的是解耦,使得代码更加灵活、可测试和可维护。具体来说,依赖注入原理包括以下几个步骤:1. 定义依赖关系:首先需要定义需要注入
2023-09-21

laravel依赖注入的原理是什么

Laravel的依赖注入原理是基于反射的。依赖注入是一种设计模式,它的目的是通过将依赖对象的实例传递给需要它们的对象,来解耦和提高代码的可测试性和可维护性。在Laravel中,依赖注入是通过服务容器实现的。服务容器是一个用于管理类的实例的
2023-10-22

laravel依赖注入原理是什么

Laravel的依赖注入原理是通过容器(Container)来实现的。容器是一个管理依赖关系的工具,它可以创建和解析对象,并自动解决对象之间的依赖关系。在Laravel中,我们可以通过构造函数、方法参数、属性注入等方式来声明依赖关系。当需要
2023-09-06

VSCode中依赖注入的原理是什么

这篇文章主要介绍“VSCode中依赖注入的原理是什么”,在日常操作中,相信很多人在VSCode中依赖注入的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”VSCode中依赖注入的原理是什么”的疑惑有所
2023-07-05

SQL参数化查询能防止SQL注入的原因是什么

这篇文章主要介绍了SQL参数化查询能防止SQL注入的原因是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL参数化查询能防止SQL注入的原因是什么文章都会有所收获,下面我们一起来看看吧。
2023-03-20

编程热搜

目录