https://blog.csdn.net/DFF1993/article/details/80030910
一、什么是SQL注入
程序员在编写代码的时候,没有对用户输入数据的合法性进行判断
,使应用程序存在安全隐患。
攻击者可以提交一段精心构造的数据库查询代码
,根据返回的结果,获得某些他想得知的数据
,这就是所谓的SQL Injection,即SQL注入。
受影响的系统:对输入的参数
不进行检查和过滤的系统。
二、简单的SQL注入实例
假设这么一个情景,一个网页的后台入口处需要验证用户名和密码,验证程序的SQL语句是这样写:
Select* fromadminwhereuser=‘TxtBox1.txt’andpass=‘TxtBox2.txt’
如果用户填写的用户名和密码都是: ‘abc’ or ‘1’=‘1’
那么将导致SQL语句是:
Select* fromadminwhereuser=‘abc’ or ‘1’=‘1’andpass==‘abc’ or ‘1’=‘1’
这条语句是永真式
,那么攻击者就成功登陆了后台。这就是最简单的SQL注入方式。
三、SQL注入过程
(1).寻找可能存在SQL注入漏洞的链接
SQL注入漏洞的几种判断方法
参考:
https://blog.csdn.net/qq_34858648/article/details/52750038
① http://www.heetian.com/showtail.asp?id=40
② http://www.heetian.com/showtail.asp?id=40 and 1=1
③ http://www.heetian.com/showtail.asp?id=40 and 1=2
如果执行①后,页面上提示报错或者提示数据库错误的话
,说明是存在注入漏洞的。
如果执行②后,页面正常显示,而执行③后,页面报错
,那么说明这个页面是存在注入漏洞的。
(2).测试该网站是否有SQL注入漏洞
(3).猜管理员帐号表
(4).猜测管理员表中的字段
(5).猜测用户名和密码的长度
(6).猜测用户名
(7).猜测密码
四、SQL注入的防范
由于SQL注入攻击是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以许多防火墙等都不会对SQL注入发出警报。而目前互联网上存在SQL注入漏洞的Web站点并不在少数,对此,网站管理员和Web应用开发程序员必须引起足够的重视。
SQL注入漏洞在网上极为普遍,通常是由于程序员对用户提交的数据和输入参数没有进行严格的过滤所导致的。
比如过滤逗号,单引号,分号等;如果select、delete、from、*、union之类的字符串同时出现多个的话,也要引起重视;最好对用户提交的参数的长度也进行判断。
防范SQL注入的另一个可行办法是摒弃动态SQL语句,而改用用户存储过程来访问和操作数据。这需要在建立数据库后,仔细考虑Web程序需要对数据库进行的各种操作,并为之建立存储过程,然后让Web程序调用存储过程来完成数据库操作。这样,用户提交的数据将不是用来生成动态SQL语句
,而是确确实实地作为参数传递给存储过程,从而有效阻断了SQL注入的途径。