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. akka设计模式系列(Actor模型)

    谈到Akka就必须介绍Actor并发模型,而谈到Actor就必须看一篇叫做<A Universal Modular Actor Formalism for Artificial Intellig ...

  2. win快速搜索软件

    Everything 与其他搜索工具的简单比较: Everything 是至今为止 X-Force 所使用过速度最快的文件搜索工具.与它相似的有异次元曾经介绍过一款很老的软件AVAFind,也非常的优 ...

  3. [转]我是蒟蒻,但我有我的OI信仰

    我想最大的浪漫莫过于有人陪你征战OI吧 有多少无眠的夜晚?我总是在想, 到底是为了什么? 为了自招?为了省队?为了签约? 这条路很艰难,不可谓不凶险, 当你第一次踏上复试, 你肯定有看到过那些很厉害很 ...

  4. C# Autofac 出现 尝试创建“XXController”类型的控制器时出错。请确保控制器具有无参数公共构造函数 错误解决方案

    出现以下错误: 总结解决方案: 本项目采用构造函数方法进行依赖注入,由于个人原因在业务层相互注入了接口,导致交叉:报错

  5. MaBatis配置(单配置 之一)

    注: 此文中的实体类还是沿用上一章的Emp和Dept两个类 .引入需要的jar包文件:http://pan.baidu.com/s/1qYy9nUc :mybatis-3.2.2.jar .编写MyB ...

  6. 项目管理01--使用Maven构建项目(纯干货)

    目录 1. Maven基础知识 2. Maven实战.开发.测试.打包.部署一个Web项目 一.Maven基础知识 Maven坐标 Maven提供了一个中央仓库,里面包含了大量的开源软件的jar包,只 ...

  7. Storm 入门一:基本知识+网上资源链接

    Strom首页:http://storm.apache.org/ 下载地址:http://www.apache.org/dyn/closer.lua/storm/apache-storm-1.1.0/ ...

  8. node 第三方包学习

    时间格式化 moment var moment = require('moment'); moment().format();

  9. 移动web——bootstrap模板

    基本概念 1.bootstrap就是在媒体查询技术出现以后才开始出现的 2.此技术使响应式开发变得十分轻松,最大特点就是栅格系统(什么设备上如何显示)以及响应式工具(是否可见) 基本模板 <!D ...

  10. dotnetnuke 7.x登录时不跳到站点设置中的指定页

    查源码发现登录按钮有参数,点击跳到登录页或者弹窗登录,真正登录后会根据传参的url反回.因为皮肤对像没有相应参数,所以只能去掉参数.我是用js去的,偷个懒吧.如下所示: <script type ...