软考-信息安全工程师学习笔记96—数据库安全知识扩展
SQL注入原理
定义:通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL 命令。
具体来说,它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句
SQL注入演示
例如:
当我们在网站上输入用户名和密码登陆时,系统会在后台 产生一个SQL语句。
Select * from Users where Username=‘”&UserName&”’ and Password=‘”&Password&”’
正常情况下:UserName=abc ,Password=123语句产生如下: – select * from Users where UserName='abc' and Password='123
若我在用户名中输入‘ or 1=1 –,密码随意输入3,则语句如下:
– select * from Users where Username='' or 1=1 --and password='3'
说明下:
- 两个单引号说明用户名为空
- 1=1说明永远成立
- or 只要有一个成立即可
- --将密码判断注释掉了
- 意义:绕过输入真实的用户名,密码任意填写,即可登录系统
SQL注入攻击总结
- 利用SQL语句本身问题,将原有的SQL语句改变。
- 并不是每次注入都能够成功。
总结:攻击通过什么呢?
- 空格 , -- ;
- or
- delete、drop、update等关键词
- xp_shel
SQL注入防范—数据库防范
用户权限控制 – 坚持最小权限原则,特别是truncate、drop等权限
特殊字符的过滤 – 空格, -- ;
数据完整性判断
- 若参数是纯数字,则要进行数字判断,如:Id=1。
- 若参数为字符串,则要删除特殊字符,重点是空格。如:高校邦的 测试题。其次可以对长度进行判断,比如学号15位,身份证号18位等等
借助于第三方软件对web服务器进行防范。
- 代表软件:网站安全狗
- 普通的注入是可以阻挡的,但不是万能的。
- 这主要取决于网站安全狗的算法。
学习参考资料:
信息安全工程师教程(第二版)
建群网培信息安全工程师系列视频教程
信息安全工程师5天修炼