From:https://www.daguanren.cc/post/sql-injection.html

SQL注入的定义与诱因

定义

SQL攻击(英语:SQL injection),简称注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

只要是支持批处理SQL指令的数据库服务器,都有可能受到此种手法的攻击。

诱因

在应用程序中若有下列状况,则可能应用程序正暴露在SQL Injection的高风险情况下:

  • 在应用程序中使用字符串联结方式组合SQL指令。
  • 在应用程序链接数据库时使用权限过大的账户(例如很多开发人员都喜欢用最高权限的系统管理员账户(如常见的root,sa等)连接数据库)。
  • 在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
  • 太过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。

下面的GIF展示的是SQL注入的示意:

代码解释

假设某个网站的登录验证的SQL查询代码为

SELECT * FROM `user` WHERE (username = 'username') and (password = 'password');

如果恶意将username和password传入的值设置为:

username = '1' OR '1'='1';
password = '1' OR '1'='1';

即为:

SELECT * FROM user WHERE (username = '1' OR '1'='1') and (password = '1' OR '1'='1');

由于OR 1=1 总是为真(true),原SQL语句等同于:

SELECT * FROM user;

SQL注入的危害与防护

危害

  1. 数据表中的数据外泄,例如个人机密数据,账户数据,密码等。
  2. 数据结构被黑客探知,得以做进一步攻击(例如SELECT * FROM sys.tables)。
  3. 数据库服务器被攻击,系统管理员账户被窜改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
  4. 获取系统较高权限后,有可能得以在网页加入恶意链接、恶意代码以及XSS等。
  5. 经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell "net stop iisadmin"可停止服务器的IIS服务)。
  6. 破坏硬盘数据,瘫痪全系统(例如xp_cmdshell "FORMAT C:")。

防护

  1. 在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。
  2. 在组合SQL字符串时,先针对所传入的参数作字符取代(将单引号字符取代为连续2个单引号字符)。
  3. 使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件。
  4. 使用SQL防注入框架开发。

参考资料

  • 维基百科SQL注入
  • w3schools的SQL_Injection

本文链接:https://www.daguanren.cc/post/sql-injection.html

WEB三大攻击之—SQL注入攻击与防护相关推荐

  1. Web安全篇之SQL注入攻击

    在网上找了一篇关于sql注入的解释文章,还有很多技术,走马观花吧 文章来源:http://www.2cto.com/article/201310/250877.html ps:直接copy,格式有点问 ...

  2. Web安全篇之SQL注入攻击(1)

    文章来源 0day concept <web安全之SQL注入篇>课程简单介绍: SQL注入篇一共分为三讲: 第一讲:"纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入 ...

  3. 什么是SQL注入攻击?SQL注入攻击的危害以及防护

    用户打开一个输入框,可以输入任何内容,包括SQL语句.如果网站开发者,没有对用户输入的内容,进行判断和过滤,那么这些语句将被执行.攻击者可以在管理员毫不知情的情况下,对数据库服务器进行操作. SQL注 ...

  4. 什么是SQL注入攻击?SQL注入攻击原理是什么?

    SQL注入攻击是网络安全中非常常见的攻击方式之一,该攻击隐蔽性好.危害大.操作方便,也是各大企业及站长最容易遇到的攻击方式.那么SQL注入攻击原理是什么?如何防范?接下来跟着小编来看看吧. SQL注入 ...

  5. 浅析:XSS攻击、SQL注入攻击和CSRF攻击

    1.XSS(Cross Site Script)攻击 跨站脚本攻击,是在用户浏览网页时向用户浏览器中执行恶意脚本的攻击方式. 跨站脚本攻击分有两种形式:反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以 ...

  6. 08蚂蚁-互联网安全架构——1.XSS攻击,SQL注入攻击,Http请求防盗链,CSRF请求攻击,忘记密码暴力破解,上传文件漏洞

    常见Web安全漏洞 XSS攻击 什么是XSS攻击手段 XSS攻击使用Javascript脚本注入进行攻击 例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑 ...

  7. php安全编程—sql注入攻击

    原文:php安全编程-sql注入攻击 php安全编程--sql注入攻击 定义 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语 ...

  8. php过滤提交数据 防止sql注入攻击

    php过滤提交数据 防止sql注入攻击 在SQL注入攻击 中,用户通过操纵表单或 GET 查询字符串,将信息添加到数据库查询中.例如,假设有一个简单的登录数据库.这个数据库中的每个记录都有一个用户名字 ...

  9. SQL注入攻击分为几类?如何防御?

    网络安全攻击方式有很多种,其中较为常见的有:SQL注入攻击.XSS攻击.DDoS攻击.URL篡改等.本篇文章重点为大家介绍一下SQL注入攻击,那么你知道什么是SQL注入攻击吗?SQL注入攻击分为哪几类 ...

  10. 聊聊 SQL 注入攻击

    sql注入是一个很基础的问题,一说大家都好像知道,听说过,如果再细说说,什么sql注入攻击,怎么sql注入攻击,sql注入攻击有什么危害,十有八九都说不清楚,因此,本篇文章就来聊聊这些问题. 什么是 ...

最新文章

  1. 一文详解面向多级多模态场景的召回引擎
  2. 如何判断服务器遭到***
  3. Directx 顶点和顶点缓存
  4. 报名 | “阳奉阴违”的半监督学习算法 - Virtual Adversarial Training
  5. API测试工具SoapUI Postman对比分析
  6. android群英传 自定义滑动view,Android群英传学习之路-View的滑动
  7. Visual Studio 2019 16.6 Preview 2 发布
  8. Netty-2-服务端创建多个handler
  9. C#在OpenGL编程中的应用--关于摩尔纹的研究
  10. Codeforces 1043F(容斥+dp)
  11. 3D图形原理和一些基本概念
  12. archlinux + dwm系统美化
  13. 如何写一个Vue自定义指令
  14. CG-62 压电式雨量传感器
  15. 北洋UAM-05LX(网口系列适用)ROS节点
  16. Uncaught Error: @electron/remote is disabled for this WebContents
  17. uniapp上高德(百度)地图API的使用(APP安卓)
  18. 关于原神沙漠痕迹效果的踩坑记录
  19. 在Eclipse下开发Robocode
  20. 【Python】实现一个简单的区块链系统

热门文章

  1. sun认证 java怎么考_Sun认证Java开发员考试介绍
  2. unix服务器修改系统时间,Linux或Unix修改系统时间的方法
  3. python 自动交易_Python自动化交易入门
  4. 开放源代码软件及其许可证
  5. sql学生选课管理系统
  6. C语言-数组练习题(附答案)
  7. 安卓移动办公软件_安卓免费办公软件套装 速度快功能强大 WPS Office 12.6.4 解锁高级版特权...
  8. 实验一 201521410003 15网一 叶萌熙
  9. cad插件_CAD插件乱刀去教育戳记安装教程
  10. 小米网卡驱动_小米是什么?(上)