SQL注入是站点和web应用程序中最常见的安全漏洞。

这样的恶意技术有非常多应用场景, 但(SQL注入)一般是指在数据输入的地方注入代码以利用数据库应用程序中的安全漏洞。 SQL注入在接收用户输入的接口处 (也就是说在注冊表单、查询表单等地方)尝试运行注入操作。

对(SQL注入)高度关注以及方便检測数据库应用程序中的安全漏洞使得攻击者常常地以最小的努力“測试”站点/应用程序的安全完整性。

危害

成功运行的SQL注入有可能严重危害数据库中存储的数据。这样的攻击的意图可能包含(但不限于)不论什么下面方式:

● 数据提取

● 加入或改动数据

● 瘫痪服务

● 绕过身份验证

● 运行远程命令

● 改动权限

总结来说,一个成功运行的SQL注入可能让攻击者像管理员一样控制数据库。

SQL注入著名的样例包含:

2008年4月---- 在一个SQL注入导致攻击者下载了10597个属于性犯罪者的社会安全号码后,俄克拉荷马州的性暴力犯罪者注冊机构关闭了他们的站点。

http://thedailywtf.com/Articles/Oklahoma-Leaks-Tens-of-Thousands-of-Social-Security-Numbers,-Other-Sensitive-Data.aspx

2011年6月--- PBS 被黑客LulzSec攻击了。他在PBS首页加入了一个故事声称在过去的15年里图帕克沙克一直在新西兰生活。

http://www.huffingtonpost.com/2011/05/30/pbs-hacked-tupac-alive_n_868673.html

2011年6月--- 在一个用户把SQL注入漏洞的细节公布到黑客论坛之后,Lady Gaga’s站点成千上万粉丝的个人信息(电子邮件、名字)被泄露。

据报道。被泄露信息的粉丝收到了推送 lady Gaga’s商品的欺诈邮件。http://www.mirror.co.uk/celebs/news/2011/07/16/lady-gaga-website-hacked-and-fans-details-stolen-115875-23274356/

预防措施

转义符号

很多的SQL注入攻击能够被预防仅仅要在提交查询之前转义引號。

请參考谷歌的Code University站点的样例。

一些开发者使用一种被称为“黑名单”类似于转义(符号)的技术。输入接口处过滤危急的字符。通常不推荐这样的方式,由于当你选择这样的替代方案时也影响到了数据本身。

重要事项

不管是转义还是“黑名单”技术都不能提供全然的保护以防止SQL注入,由于他们不能阻止数字參数攻击。数字參数攻击不须要引號或不论什么特殊字符。

白名单

白名单是表单输入校验,当中仅仅接受一个良好定义的设置(或列表)输入的值。输入限制越详细。越能减少SQL注入攻击的风险。比如。假设你是接受一个月份的输入參数,你能够按下面方式检查:

● 是否是integer类型

● 这个integer类型參数是否大于0

● 这个integer类型參数是否小于12

这样当攻击者发动对你的数据库攻击时。每一个限制条件都会缩小攻击者的试探范围。

最小权限原则

仅仅启用站点、应用所需的权限功能。通过限制您訪问数据库的账户权限。同一时候你也限制了easy遭受的SQL注入攻击。比如,假设你有一个查询数据库的需求。查询数据库的账户应当仅仅有读取权限。一般来说,查询者不须要改动、加入数据,所以他不须要Insert或Update权限。

在这样的情况下,这些权限不须要存在,因此他们(查询者)也不须要有这些权限。假设这些权限在你的站点、应用中不存在,它们就不会被攻击者利用。

不要显示具体的错误信息

错误消息有时会暴露一些信息,这使得攻击者能获取数据库的某些特征。攻击者获取数据库的信息越多,他就越能对已知漏洞发起攻击。

加密敏感数据

以上全部的信息有助于您保护数据库中的数据避免被攻击,并且你也应当加密数据。使用对称加密算法,你能够轻松加密敏感数据(仅仅能使用密钥来解密)。这样的技术的缺点是假设攻击者知道了你的密钥,他们就能非常easy解密你的数据。这就是为什么不要把密钥和数据库中的数据存放在一起而是存放在server文件中如此重要。

1. 本文由mathew翻译

2. 本文译自Web Security: SQL Injection | DBS Interactive

3. 转载请务必注明本文出自:程序猿学架构(微信号:archleaner
)

4. 很多其它文章请扫码:

WEB安全:SQL注入的更多相关文章

  1. 【web渗透技术】渗透攻防Web篇-SQL注入攻击初级

    [web渗透技术]渗透攻防Web篇-SQL注入攻击初级 前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的S ...

  2. 实验八 Web基础 SQL注入原理

    实验八 Web基础 实验要求 (1)Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2)Web前端javascipt ...

  3. web渗透-sql注入

    何为sql注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,得到想要得到的信息. OWASPTop 10 此处的注 ...

  4. 了解web漏洞-sql注入

    1:为什么要学web漏洞? 作为一个运维人员,日常工作就是保障服务器和网站的业务正常运行,平时也需要对服务器的安全工作加固,说到防护攻击问题,那么久必须去了解攻击者是怎么对服务器发动的一个流程,这样才 ...

  5. [Web安全]SQL注入

    Web网站最头痛的就是遭受攻击.Web很脆弱,所以基本的安防工作,我们必须要了解! 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意 ...

  6. 基础Web漏洞-SQL注入入门(手工注入篇)

    一.什么是SQL注入  SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL.而SQL注入是将Web页面的原URL.表单域或数据包输入的参数,修改拼接成SQ ...

  7. web安全—sql注入漏洞

    SQL注入-mysql注入 一.普通的mysql注入 MySQL注入不像注入access数据库那样,不需要猜.从mysql5.0以上的版本,出现一个虚拟的数据库,即:information_schem ...

  8. ref:web 防止SQL注入方法

    ref:https://blog.csdn.net/beidou321/article/details/6482618 小结:spring采用JdbcTemplate来操作sql,一般不要自行拼接sq ...

  9. WEB渗透 - SQL注入(持续更新)

    SQL注入 按变量类型分:数字型和字符型 按HTTP提交方式分:POST注入.GET注入和Cookie注入 按注入方式分:布尔注入.联合注入.多语句注入.报错注入.延时注入.内联注入 按数据库类型分: ...

  10. 【渗透攻防WEB篇】SQL注入攻击初级

    前言不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一,这里我想问 ...

随机推荐

  1. cookie和seesion区别

    cookie 和session 的区别详解 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie ...

  2. JavaScript入门三

    *********BOM和DOM******** JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 Java ...

  3. B-Tree 漫谈 (从二叉树到二叉搜索树到平衡树到红黑树到B树到B+树到B*树)

    关于B树的学习还是需要做点笔记. B树是为磁盘或者其他直接存取辅助存储设备而设计的一种平衡查找树.B树与红黑树的不同在于,B树可以有很多子女,从几个到几千个.比如一个分支因子为1001,高度为2的B树 ...

  4. Java系列学习(三)-基础语法

    1.关键字 特点:全部小写 2.标识符 (1)就是给类,接口,方法等起名字的字符序列 (2)组成规则: A:英文大小写字母 B:数字 C:$和_ (3)注意事项: A:不能以数字开头 B:不能是jav ...

  5. JS——轮播图简单版

    1.小图标版本 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. JS——绑定自定义属性

    1.绑定自定义属性: (1)元素节点.属性或元素节点[属性]绑定的属性不会出现在标签中,setAttribute可以出现在标签中. (2)setAttribute获取不到元素节点.属性形式绑定的属性值 ...

  7. R语言开发环境的搭建

    1.R语言的下载 https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 2.R语言的安装 安装完后,打开R Console 输入 pie(c(0.9, 0.2, 0.3 ...

  8. tidyverse生态链

    一套完整的数据分析流程 , 如下图所示 从图中可以看到,整个流程包括读取数据,整洁数据,数据探索和交流部分.经过前两部分, 我们可以得到一个整理好的数据,它的每一行都是一个样本 , 每一列是一个变量. ...

  9. 配置tfs2017的agent

    tfs支持四种验证方式,分别是:PAT.Negotiate.Integrated.Alternate 我们使用Negotiate方式 首先,登录tfs服务器,设置iis的身份验证  添加一个Negot ...

  10. Spring处理自动装配的歧义性

    1.标识首选的bean 2.使用限定符@Qualifier 首先在bean的声明上添加@Qualifier 注解: @Component @Qualifier("cdtest") ...