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. Vue登录切换中的问题及解决
  2. spark编程基础--6.DataFrame
  3. python print函数用法_Python3.2中Print函数用法实例详解
  4. OpenFlow Switch — 1.3 规范
  5. LinearPolar函数
  6. 20155222卢梓杰 《Java程序设计》第1周学习总结
  7. 在MaxCompute中利用bitmap进行数据处理
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的家电销售管理系统
  9. 乐鑫ESP32开发 1.Vscode创建新工程,编译,下载烧录,监视端口,点亮一个LED
  10. xmapp mysql打不开_XAMPP 的MYSQL无法启动
  11. jQuery中return false e preventDefault e stopPropagation 的区
  12. 阶段3 2.Spring_02.程序间耦合_2 编译期依赖
  13. 基于JavaWeb实现网上图书商城系统
  14. 【高级篇 / DNS】(7.0) ❀ 04. FortiGuard 动态 DNS (DDNS) ❀ FortiGate 防火墙
  15. python123货币转换器_Python货币换算I,Python123python,转换
  16. vivoX9手机拆解
  17. Serverless 技术架构 — 初探传说中的FAAS(Function as a Service)
  18. 【网页设计】HTML做一个属于我的音乐页面(纯html代码)
  19. 中国手术标记笔市场趋势报告、技术动态创新及市场预测
  20. oracle分区注意点,ORACLE分区表梳理系列(二)- 分区表日常维护及注意事项

热门文章

  1. Java基准测试工具JMH使用
  2. 超全!常见自动化运维工具全解析(含ansible、Puppet、SaltStack教程)
  3. 70个python毕设项目_这10个Python项目很有趣!
  4. 【C语言函数调用详解】——传值调用传址调用
  5. Python深度学习基于PyTorch (附完整PPT下载)
  6. Python100道经典练习题(附PDF)
  7. 用python简单代码做一个计算器
  8. Linux Keepalived 高可用虚拟IP安装与配置
  9. ABAQUS6.10 VS2008 Intel fortan11.1
  10. 如何使用SqlLoader导入数据