SQL注入原理&分类&危害&防御

 

SQL是什么?

结构化查询语句

SQL注入是什么?

是一种将SQL 语句插入或添加到用户输入的参数中,这些参数传递到后台服务器,加以解析并执行

造成注入的原因/原理?

1.对用户输入的参数没有进行严格过滤(如过滤单双引号 尖括号等),就被带到数据库执行,造成了SQL注入

2.使用了字符串拼接的方式构造SQL语句

SQL注入分类?

根据数据类型分为:1.整型注入  2.字符型注入

根据注入语法分为:1.联合查询注入  2.报错型注入    3.布尔型注入  4.延时型注入  5.多语句查询注入

SQL注入危害?

1.数据库信息泄露

2.网页篡改:登陆后台后发布恶意内容

3.网站挂马 : 当拿到webshell时或者获取到服务器的权限以后,可将一些网页木马挂在服务器上,去攻击别人

4.私自添加系统账号

5.读写文件获取webshell

防御?

1.对进去数据库的特殊字符(单双引号 尖括号等)进行编码转换

2.不要使用动态拼装SQL,使用参数化SQL

3.不要使用管理员权限的数据连接,最好为每个应用使用单独的数据库连接

4.应用异常信息尽量给出少的提示,最好自定义报错信息对原始报错信息进行包装

5.使用防火墙,安全狗,云盾等

扩展:

联合查询:合并多个相似的选择查询结果

联合查询限制条件:必须由两条或两条以上的select语句组成,语句之间用关键字union分隔

                                 union中的每个查询必须包含相同的列

不管是报错还联合注入都是基于整型和字符型注入这两种类型下的

报错注入:由于配置不当,错误信息被输出到前台,导致攻击者根据报错信息进行一系列操作

延时注入和布尔注入共同点:都是一个字符一个字符爆出来的,耗费时间长,都没有显示位,都要ASCII码推算

 

人生得意须尽 莫使金樽空对月
原文地址:https://www.cnblogs.com/puhk/p/10702619.html