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. 最全的C/C++入门到进阶的书籍推荐,你需要嘛?

    编程是操作性很强的一门知识,看书少不了,但只有学习和实践相结合才能起到很好的效果,一种学习方法是看视频->看书->研究书中例子->自己做些东西->交流->看书. 研究经典 ...

  2. Akka源码分析-Remote-ActorSystem

    前面的文章都是基于local模式分析的,现在我们简要分析一下在remote模式下,ActorSystem的创建过程. final val ProviderClass: String = setup.g ...

  3. 354 Russian Doll Envelopes 俄罗斯娃娃信封

    You have a number of envelopes with widths and heights given as a pair of integers (w, h). One envel ...

  4. 342 Power of Four 4的幂

    给定一个整数 (32位有符整数型),请写出一个函数来检验它是否是4的幂.示例:当 num = 16 时 ,返回 true . 当 num = 5时,返回 false.问题进阶:你能不使用循环/递归来解 ...

  5. 对“空引用”说bye-bye

    大家可能经常遇到这种情况:当一个对象为null时,调用这个对象的方法或者属性时,就会报错:“Object reference not set to an instance of an object.” ...

  6. 利用php生成验证码

    <?php /** * php生成验证码 * @param $width 画布宽 * @param $height 画布高 * @param $vcodelen 验证码长度 * @param $ ...

  7. 【译】x86程序员手册10 - 第4章系统架构

    1.1.2 Part II -- Systems Programming 系统编程 This part presents those aspects of the architecture that ...

  8. Stanford coursera Andrew Ng 机器学习课程第二周总结(附Exercise 1)

    Exercise 1:Linear Regression---实现一个线性回归 重要公式 1.h(θ)函数 2.J(θ)函数 思考一下,在matlab里面怎么表达?如下: 原理如下:(如果你懂了这道作 ...

  9. listcontrol 加combobox

    之前写过一篇(list Control实现单元格编辑)文章,那篇文章不是很完善执行的时候有时会出错,这篇文章经过完善后还加入了Combo Box功能! 这里我就只是晒一下我的代码; 头文件: // L ...

  10. centos7 安装 PostgreSql

    确定你是管理员,然后运行命令: yum -y install postgresql-server postgresql-contrib 初始化数据库 postgresql-setup initdb 启 ...