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. HDU 3785 找寻大富翁

    2019-06-06 08:30:03 坚持!!! 做这些水题,都觉得心累,特别是HDU的题,我PE了3发

  2. JS/JQuery操作DOM元素笔记

    原因 自己目前在搭建一个.NET Core的框架,正在构建权限这块的东西,今天设置权限界面,需要使用JavaScript操作DOM元素,记录一下. 页面大概是酱紫的(我使用的AdminLTE和LayU ...

  3. html表单代码演示

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  4. linux如何更改yum源

    更改linux yum源方法:第一步:进入yum配置文件目录:cd /etc/yum.repos.d/第二步:备份配置文件(如果后续出现了问题就可以恢复):mv CentOS-Base.repo Ce ...

  5. 查看当前linux版本

    lsb_release -a 如果命令不存在,则yum安装 yum install redhat-lsb

  6. SAS学习笔记之《SAS编程与数据挖掘商业案例》(1)系统简介和编程基础

    SAS学习笔记之<SAS编程与数据挖掘商业案例>(1)系统简介和编程基础 1. SAS系统简介 1.1 SAS是先编译后执行的语言,data步标志着编译的开始. 数据指针:当前内存缓存区, ...

  7. 图解TCP/IP笔记(1)——TCP/IP协议群

    转载请注明:https://www.cnblogs.com/igoslly/p/9167916.html TCP/IP制定  制定:IETF 记录:RFC - Request for comment ...

  8. Ajax——php基础知识(三)

    上传文件 1.get是传不了文件的,只能用post 2.enctype需要重新设置,默认是application/x-www-form-urlencoded,会在发送到服务器之前,所有字符都会进行编码 ...

  9. servlet-响应的定时刷新

    package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.ser ...

  10. 查看APK包名签名等信息

    有些游戏第三方比如分享需要配置游戏包名和签名,不同渠道包名签名又不同,所以时常需要查看不同apk包等签名信息,之前是使用等微博开放平台的手机客户端查看apk签名,前提是知道包名,网上找了下查看签名和包 ...