SQL注入式攻击的本质
2023-06-13 09:14:07 时间
更没想到的是这么老掉牙的东西居然还能跑出来搅风搅雨,而且造成了如此大的破坏,有文章还说注入式攻击还会有“第三波”攻击潮,到时候会更加难以察觉,连微软的大佬都跑出来澄清说与微软的技术与编码无关,微软为此还专门推出了三个检测软件,那么这个SQL注入式攻击的漏洞究竟是怎么造成的呢?
正如微软的大佬所说的,是由于网站程序的开发人员编码不当造成的,不光是ASP、ASP.NET,也包括JSP、PHP等技术,受影响的也不仅仅是Access和SQLServer数据库,也包括Oracle和MySql等其他关系数据库,和人家微软没什么关系。事实上不光是基于B/S架构的系统或网站存在这样的问题,基于C/S架构的系统也存在这样的问题,只不过由于C/S架构的特点决定了不可能像B/S系统这样影响这么广泛。那么为什么说这个问题是开发人员编码不当造成的呢,下面我们就来具体分析。
首先让我们来看一下以下这两条SQL查询语句
语句1:select*fromnewswherenewstype=1
语句2:select*fromnewswherenewstype=1;droptablenews
语句3:select*fromnewswherenewstype="社会新闻"
语句4:select*fromnewswherenewstype="社会新闻";droptablenews--"
大家都知道语句1的作用是查询news表中newstype字段值等于1的所有记录,其中newstype字段的类型是一种数值型,比如Int、SmaillInt、TinyInt、Float等等;语句2实际上是两条语句,第一条的作用和语句1的作用相同,第二条的作用是删除数据库中的news表。语句3和语句4的功能和语句1、语句2的基本相同,所不同的是语句3、4里的newstype字段是字符型的,比如:char、varchar、nvarchar、text等等
不管是在ASP还是ASP.NET还是JSP或PHP,一般我们都会采用“select*fromnewswherenewstype=”+v_newstype的方法来构造语句1,或者“select*fromnewswherenewstype="”+v_newstype+"""来构造语句3,其中v_newstype是一个变量,如果v_newstype的值等于1,构造出来的就是语句1了,如果v_newstype的值等于"社会新闻",构造出来的就是语句3了,但是很不幸的是如果我们忽略了对v_newstype的检查,通过这个方法构造出来的也可能是语句2或者语句4,比如v_newstype的值为“1;droptablenews”或“社会新闻";droptablenews--”,如果我们的疏忽让别人给利用了,就会给我们造成巨大的损失,SQL注入式攻击正是利用了我们的这个疏忽,所以说SQL注入式攻击的根源来自开发人员的编码不当和你所使用的平台、开发工具以及系统架构等等都没有任何直接的关系。
既然SQL注入式攻击是由于编码人员编码不当造成的,那究竟怎么样的编码才是恰当的编码才不会受到SQL注入攻击呢,下一篇我们将继续介绍。
正如微软的大佬所说的,是由于网站程序的开发人员编码不当造成的,不光是ASP、ASP.NET,也包括JSP、PHP等技术,受影响的也不仅仅是Access和SQLServer数据库,也包括Oracle和MySql等其他关系数据库,和人家微软没什么关系。事实上不光是基于B/S架构的系统或网站存在这样的问题,基于C/S架构的系统也存在这样的问题,只不过由于C/S架构的特点决定了不可能像B/S系统这样影响这么广泛。那么为什么说这个问题是开发人员编码不当造成的呢,下面我们就来具体分析。
首先让我们来看一下以下这两条SQL查询语句
语句1:select*fromnewswherenewstype=1
语句2:select*fromnewswherenewstype=1;droptablenews
语句3:select*fromnewswherenewstype="社会新闻"
语句4:select*fromnewswherenewstype="社会新闻";droptablenews--"
大家都知道语句1的作用是查询news表中newstype字段值等于1的所有记录,其中newstype字段的类型是一种数值型,比如Int、SmaillInt、TinyInt、Float等等;语句2实际上是两条语句,第一条的作用和语句1的作用相同,第二条的作用是删除数据库中的news表。语句3和语句4的功能和语句1、语句2的基本相同,所不同的是语句3、4里的newstype字段是字符型的,比如:char、varchar、nvarchar、text等等
不管是在ASP还是ASP.NET还是JSP或PHP,一般我们都会采用“select*fromnewswherenewstype=”+v_newstype的方法来构造语句1,或者“select*fromnewswherenewstype="”+v_newstype+"""来构造语句3,其中v_newstype是一个变量,如果v_newstype的值等于1,构造出来的就是语句1了,如果v_newstype的值等于"社会新闻",构造出来的就是语句3了,但是很不幸的是如果我们忽略了对v_newstype的检查,通过这个方法构造出来的也可能是语句2或者语句4,比如v_newstype的值为“1;droptablenews”或“社会新闻";droptablenews--”,如果我们的疏忽让别人给利用了,就会给我们造成巨大的损失,SQL注入式攻击正是利用了我们的这个疏忽,所以说SQL注入式攻击的根源来自开发人员的编码不当和你所使用的平台、开发工具以及系统架构等等都没有任何直接的关系。
既然SQL注入式攻击是由于编码人员编码不当造成的,那究竟怎么样的编码才是恰当的编码才不会受到SQL注入攻击呢,下一篇我们将继续介绍。
相关文章
- 摄像头和激光雷达都被蒙蔽?UCI首次提出针对自动驾驶多传感器融合感知的攻击
- 疑因泄露受害者数据,LockBit团伙遭受DDoS攻击
- 防范Linux服务器ARF攻击(arp攻击linux)
- Hibernate show_sql属性:指定是否输出SQL语句
- MySQL查询:精准搜索SQL语句(mysql查询sql)
- 预防Linux端口攻击的防御措施(linux端口攻击)
- Linux运行 SQL: 获取自动化数据操作能力(linux执行sql)
- MSSQL 2008保护防范注入攻击(mssql2008注入)
- 服务器FTP攻击导致Linux服务器面临的威胁(ftp入侵linux)
- 预防SQL Server注入攻击:小白必看(sqlserver注入)
- 每日安全资讯:SHA-1 碰撞攻击正变得切实可行
- 攻击者发动中间人攻击 GitHub 和京东受影响最大
- 三种新的针对IOS的假面攻击方法(Masque Attacks)
- essyn和ack DDOS攻击.c
- 通过局域网中间人攻击学网络 第三篇 netfilter框架之内核篇
- 【Linux下的攻击命令】如何防范黑客攻击?(linux攻击命令)
- MySQL如何有效防止SQL注入攻击?(mysql防sql注入)
- MySQL实现SQL数据同步的方法探究(mysql同步sql)
- SQL Server遭受未经授权访问攻击(sqlserver被黑)
- 攻击深层防范:SQL Server数据库越权穷举攻击(SQLserver穷举)
- 远程攻击:MSSQL密码获取技术(远程获取mssql密码)
- MySQL中防御SQL注入攻击的方法(mysql中sql注入)
- MySQL中的SQL语句倒序排列技巧(mysql中sql倒叙)
- 解析同步两个MySQL表格的SQL操作(mysql两表同步sql)
- 使用Redis抵御攻击,守护系统安全(redis防护)
- 掌握Oracle SQL写法,激发你的SQL能力(oracle sql写法)
- PHP与SQL注入攻击[三]
- SQL注入式攻击的本质
- 如何保障IIS的安全避免服务器遭到攻击
- Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子