目录

  • (一)什么是SQL注入
  • (二)SQL注入的类型
  • (三)SQL注入的危害
  • (四)SQL注入的防护
    • 1、分级管理
    • 2、参数传值
    • 3、基础过滤与二次过滤
    • 4、使用安全参数
    • 5、漏洞扫描
    • 6、多层验证
    • 7、数据库信息加密

(一)什么是SQL注入

SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。而SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。如Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入攻击。
SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。简单的说就是在post/getweb表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击。假设某网站页面显示时URL为http://www.example.com?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。另外,在网站开发过程中,开发人员使用动态字符串构造SQL语句,用来创建所需的应用,这种情况下SQL语句在程序的执行过程中被动态的构造使用,可以根据不同的条件产生不同的SQL语句,比如需要根据不同的要求来查询数据库中的字段。这样的开发过程其实为SQL注入攻击留下了很多的可乘之机。

(二)SQL注入的类型

按照注入方式可以分为联合注入、布尔盲注、时间盲注、堆叠注入以及报错注入等五种注入方式。

联合查询注入是最基础的注入。在SQL中,UNION操作符用于合并两个或多个SELECT语句的结果。union查询注入利用UNION关键字可以追加一条或者多条额外的SELECT查询,并将结果追加到原始查询中。
联合查询注入是最基础的注入.在sql中,联合操作符用于合并两个或多个选择语句的结果。联合查询注入利用联合关键字可以追加一条或者多条额外的选择查询,并将结果追加到原始查询中。

布尔型盲注是由于页面提交数据在与数据交互是完全没有在页面上出现回显数据,只会出现数据提交正确和错误俩种不同页面(报错型至少语法错误会回显错误在页面上)或者无法使用联合查询。
注意前三个步骤还是前面注入法一样,至少需要构造出闭合
布尔型是利用页面至少会呈现正确提交和错误提交俩种不同回馈,来构造sql语句逐个猜测数据库中内容。

时间盲注:对于基于布尔的盲注来说﹐我们可以构造一条注入语句来测试我们输入的布尔表达式,而这布尔表达式结果的真假,决定了每次页面有不同的反应。
对于基于时间的盲注来说,我们构造的语句中,包含了能否影响系统运行时间的函数,根据每次页面返回的时间,判断注入的语句是否被成功执行。

在SQL中,分号()是用来表示一条sql语句的结束。试想一下咱们在;结束一个sql语句后继续构造下一条语句,会不会一块儿执行?所以这个想法也就造就了堆叠注入
而union injection(联合注入)也是将两条语句合并在一块儿,二者之间有什么区别么?区别就在于union或者union all执行的语句类型是有限的,只能够用来执行查询语句,而堆叠注入能够执行的是任意的语句。

报错注入的原理,其实关键在于floor(rand(0)*2)语句的多次执行,造成虚拟表中主键的重复,导致报错。

(三)SQL注入的危害

未经授权状况下操作数据库中的数据。
恶意篡改网页内容Ⅱ登录后台后发布的内容,也可以发布对首页的更新,这时候更新可能就是一些非法信息,也可以对系统进行添加账户或者是数据库账号。这个需要拿到web shell或者是更高的权限。
私自添加系统帐号或者是数据库使用者帐号。
网页挂木马Ⅱ/拿到web shell或者获取到服务器的权限以后,我们将一些网页木马挂在服务器上,去攻击别人。甚至在严重些我们可以控制整个web服务器,这个都是非常危险的。

(四)SQL注入的防护

1、分级管理

对用户进行分级管理,严格控制用户的权限,对于普通用户,禁止给予数据库建立、删除、修改等相关权限,只有系统管理员才具有增、删、改、查的权限。

2、参数传值

程序员在书写SQL语言时,禁止将变量直接写入到SQL语句,必须通过设置相应的参数来传递相关的变量。从而抑制SQL注入。数据输入不能直接嵌入到查询语句中。同时要过滤输入的内容,过滤掉不安全的输入数据。或者采用参数传值的方式传递输入变量,这样可以最大程度防范SQL注入攻击。

3、基础过滤与二次过滤

SQL注入攻击前,入侵者通过修改参数提交and等特殊字符,判断是否存在漏洞,然后通过select、update等各种字符编写SQL注入语句。因此防范SQL注入要对用户输入进行检查,确保数据输入的安全性,在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤,从而有效防止SQL注入。
当然危险字符有很多,在获取用户输入提交参数时,首先要进行基础过滤,然后根据程序的功能及用户输入的可能性进行二次过滤,以确保系统的安全性。

4、使用安全参数

SQL数据库为了有效抑制SQL注入攻击的影响。在进行SQLServer数据库设计时设置了专门的SQL安全参数。在程序编写时应尽量使用安全参数来杜绝注入式攻击,从而确保系统的安全性。

5、漏洞扫描

为了更有效地防范SQL注入攻击,作为系统管理除了设置有效的防范措施,更应该及时发现系统存在SQL攻击安全漏洞。系统管理员可以采购一些SQL漏洞扫描工具,通过专业的扫描工具,可以及时的扫描到系统存在的相应漏洞。

6、多层验证

现在的网站系统功能越来越庞大复杂。为确保系统的安全,访问者的数据输入必须经过严格的验证才能进入系统,验证没通过的输入直接被拒绝访问数据库,并且向上层系统发出错误提示信息。同时在客户端访问程序中验证访问者的相关输入信息,从而更有效的防止简单的SQL注入。但是如果多层验证中的下层如果验证数据通过,那么绕过客户端的攻击者就能够随意访问系统。因此在进行多层验证时,要每个层次相互配合,只有在客户端和系统端都进行有效的验证防护,才能更好地防范SQL注入攻击。

7、数据库信息加密

山东大学软件学院2022项目实训——(四)SQL注入的学习相关推荐

  1. 2021-7-8 山东大学软件学院暑期项目实训日志-第二周 03

    目录 关于"众包"的一些学习 一,互联网概念 二,与"外包"的区分 三,出现背景 四,评价 关于"众包"的一些学习 在周一的组会上,我们的指 ...

  2. IESM项目实训四——Web Audio录音和字符串转拼音

    IESM项目实训四 通过浏览器录制音频,生成可供百度语音识别api使用的pcm音频文件,然后将音频数据传至后端.根据百度语音识别api文档要求,音频文件为pcm格式,单音道,16k采样率,16位深. ...

  3. 山东大学项目实训小组一——基于深度学习的AI视频剪辑器“易剪”

    技术要点:图像处理 计算机视觉 深度学习 多媒体前端 一.项目研究背景: 随着短视频热潮的兴起,越来越多的人投入精力到了视频剪辑视频制作之中.然而利用现有的视频剪辑工具,剪辑一段视频是非常麻烦的,尤其 ...

  4. SDU项目实训——后台搭建——SpringBoot+Vue学习(一)

    项目初期,要先搭建起一个框架,采用迭代增量的方法不断完善功能,我负责搭建一个后台管理系统,我的选择是vue和springboot.本篇博客我将记录我学习vue的过程. 1.什么是vue? vue是一个 ...

  5. 大一项目实训—学生成绩管理系统

    大一项目实训-学生成绩管理系统 项目实训总结 由于自己大一在Java课中没有好好听讲,导致项目实训中完全是一边学习一边敲代码.但自己付出了很多努力,早上8.30起床,晚上2,3点才睡甚至通宵,虽然做的 ...

  6. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(六)-SQL注入数字型

    目录 前言: 一.SQL 注入漏洞简介 1.简介 2.危害 3.利用 4.防范 二.相关配置 三.编写"SQL 注入漏洞-数字型注入"后端代码 1.使用 springboot 框架 ...

  7. 山东大学软件学院项目实训-创新实训-网络安全靶场实验平台(一)

    目录 前言 一.项目介绍 二.项目框架 三.个人分工 四.本周任务完成情况 4.1  Vue安装 4.1.1 node.js安装及配置 4.1.2 安装vue及脚手架 4.1.3 运行Vue项目 4. ...

  8. 山东大学软件学院项目实训-创新实训-SDUMeeting(一)

    山东大学软件学院项目实训-创新实训-SDUMeeting(一) 一.前言: 这个项目是山东大学视频会议项目,这个项目基于webrtc构建多人视频会议系统,我负责视频会议客户端及服务端安全防护,这个专栏 ...

  9. 山东大学软件学院项目实训-创新实训-SDUMeeting(三)

    山东大学软件学院项目实训-创新实训-SDUMeeting(三) 山大会议项目web安全之文件注入防护 一.前言 山大会议的客户端加入了对用户自定义头像的支持,需要用户自行上传头像图片,这个过程存在文件 ...

最新文章

  1. Ubuntu环境下TensorFlow 的环境搭建(一)安装Anaconda
  2. 防抖 节流_面试必备考点:防抖与节流
  3. SpringCloud+Seata1.4+Nacos1.4+MySQL8实现分布式事务(客户端)
  4. 使用WEB应用时后台发生的事
  5. The Zen of Python
  6. python逐行读取数据时出现错误_python如何逐行读取数据
  7. [html] 如何让<p>测试 空格</p>这两个词之间的空格变大?
  8. ubuntu16.04源码安装opencv3.4.0
  9. OpenCV:透视变换
  10. httpcode状态码
  11. 分享12306抢票心得-最终篇
  12. CMap的使用(转)
  13. ZBrush for Mac的插图技巧
  14. 第一次使用CoolEdit Pro将歌曲音频做成伴奏
  15. 2015-nature-deep learning-LeCun, Bengio and Hinton
  16. Android流式布局控件
  17. WPS-Word:下一页分节符不能分页,插入下一页分节符时下一节没有在新的一页开始
  18. Android 修改默认来电他,通知铃声
  19. ViewData与ViewBag比较
  20. 暗黑地牢dlc文件夹或mods文件夹中某个mod在初始界面开新档不显示/不加载的解决办法

热门文章

  1. Windows xp sp3简体中文正式版下载地址
  2. 亚马逊、微软、谷歌,谁将是5000亿美元云市场的C位?
  3. 什么是物联网AIoT?
  4. URLEncode原理
  5. python:实现Triplets with zero sum零和三元组(附完整源码)
  6. 我在北京每月白捡一万元(转贴)
  7. 一个大二博主的一年来写博的年终总结与未来展望——致2019努力的自己,也致2020更好的自己
  8. linux系统如何扩展屏幕,大神教你用 autoplank 在多个显示器上使用 Plank 扩展坞
  9. 名编辑电子杂志大师教程 | 名编辑电子杂志大师如何编辑文本文字?
  10. DEBUG命令大全及实例(有改动)