`
冰糖葫芦
  • 浏览: 294454 次
社区版块
存档分类
最新评论

web安全:SQL注入

阅读更多

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

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

最小权限原则

只启用网站、应用所需的权限功能。通过限制您访问数据库的账户权限,同时你也限制了容易遭受的SQL注入攻击。例如,如果你有一个查询数据库的需求,查询数据库的账户应当只有读取权限。一般来说,查询者不需要修改、添加数据,所以他不需要Insert或Update权限。在这种情况下,这些权限不需要存在,因此他们(查询者)也不需要有这些权限。如果这些权限在你的网站、应用中不存在,它们就不会被攻击者利用。

不要显示详细的错误信息

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

加密敏感数据

以上所有的信息有助于您保护数据库中的数据避免被攻击,而且你也应当加密数据。使用对称加密算法,你可以轻松加密敏感数据(只能使用密钥来解密)。这种技术的缺点是如果攻击者知道了你的密钥,他们就能很容易解密你的数据。这就是为什么不要把密钥和数据库中的数据存放在一起而是存放在服务器文件里如此重要。

 

 

1. 本文由mathew翻译

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

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

4. 更多文章请扫码:

1
1
分享到:
评论

相关推荐

    Web应用安全:SQL注入的辅助性对策.pptx

    Web应用安全:SQL注入的辅助性对策.pptx

    web测试之安全测试方法:sql注入方法

    现在做web测试,遇到安全测试,在这里跟大家分享我的测试心得,web测试之安全测试方法:sql注入方法

    web安全,sql注入

    web安全,sql注入的基础知识。web安全,sql注入的基础知识web安全,sql注入的基础知识web安全,sql注入的基础知识web安全,sql注入的基础知识

    Web安全开发:SQL注入攻击和网页挂马.pdf

    Web安全开发:SQL注入攻击和网页挂马.pdf

    计算机病毒与防护:SQL注入原理.ppt

    单击此处添加标题 * * 目录页 SQL注入原理 SQL注入的原理 动态页面有时会通过脚本引擎将用户输入的参数按照预先设定的规则构造成SQL语句来进行数据库操作,SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用...

    web安全性测试sql注入高级篇

    web安全性测试sql注入高级篇web安全性测试sql注入高级篇web安全性测试sql注入高级篇

    超全的Web渗透自我学习资料合集(64篇).zip

    web渗透: SQL注入(上) web渗透: SQL注入(下) web渗透: XML注入攻击 web渗透: XXE外部实体注入 web渗透: 服务器端包含注入(SSI注入) web渗透: XPath注入 web渗透: 命令注入 web渗透: HTTP响应头拆分漏洞 web...

    web安全之sql注入

    实际生活中,类似的SQL注入漏洞已是明日黄花,国内大大小小的网站都已经补上漏洞。但,百密必有一疏,入侵是偶然的,但安全绝对不是必然的。笔者曾在晨讲之前利用了一天的时间,采取手工加工具的手段批量扫描了一批...

    SQL注入攻击与防御(安全技术经典译丛)

    本书作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细讲解可能引发SQL注入的行为以及攻击者的利用要素,并结合长期实践经验提出了相应的解决方案。针对SQL...

    Web应用安全:使用SQL注入绕过方法文本.docx

    Web应用安全:使用SQL注入绕过方法文本.docx

    Web应用安全:使用SQL注入绕过认证.pptx

    使用SQL注入绕过认证 使用SQL注入绕过认证 1、SQL注入分类 SQL注入类型 数字型注入 字符型注入 其他类型注入 使用SQL注入绕过认证 1、SQL注入分类 数字型注入 许多网页链接有类似 /users.php?id=1 的结构,基于此种...

    Web应用安全:使用SQL注入攻击篡改数据实验.doc

    实验二:使用SQL注入攻击篡改数据 一、实验目的 实践SQL注入攻击 进入网站后台 二、实验内容 首先找到注入点,判断注入类型与注入方式,然后再进行暴库、表、表字段操作,最后再获取账号与密码数据,而后返回登录...

    Web应用安全:使用SQL注入绕过认证实验.doc

    实验一:使用SQL注入绕过认证 一、实验目的 使用SQL注入绕过认证 熟悉掌握常见的绕过方式 二、实验内容 本实验使用SQL注入绕过认证,其中包含注释符绕过、大小写绕过、特殊编码绕过、内联注释绕过等方式。 三、实验...

    Web应用安全:Sqlserver盲注.pptx

    SQL盲注就是在 sql 注入过程中,sql 语句执行的选择后,选择的数据不能回显 到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。 盲注分为三类: 1)基于布尔 SQL 盲注。 2)基于时间的 ...

    Web环境下SQL注入攻击的检测

    由于SQL注入攻击针对的是应用开发过程中的编程不严密,因而对于绝大多数防火墙来说,这种攻击是“合法”的。问题的解决只有依赖于完善编程。专门针对SQL注入攻击的工具较少,Wpoison对于用asp,php进行的开发有一定...

    Web安全SQL注入精讲视频.zip

    1-1 SQL注入的业务场景以及危害.mp4 1-2 真实网站中的SQL注入是怎么样的.mp4 1-3 SQL为什么有那么多分类.mp4 2-1 整型注入.mp4 2-10 SQL注入读写文件.mp4 2-2 字符型注入(单引号、双引号、括号).mp4 2-3 POST注入....

    WEB登录防sql注入 url注入 脚本注入

    WEB登录防sql注入 url注入 脚本注入

    web安全性测试之sql注入进阶篇

    web安全性测试之sql注入进阶篇web安全性测试之sql注入进阶篇

    C#防SQL注入代码的三种方法

    对于网站的安全性,是每个网站开发者和运营者最关心的问题。网站一旦出现漏洞,那势必将造成很大的损失。为了提高网站的安全性,首先网站要防注入,最重要的是服务器的安全... C#防SQL注入方法一  在Web.config文件中

    WEB安全手册(sql注入,单字节注入)

    常见的web安全知识,sql注入,单字节注入,双字节注入,xss等

Global site tag (gtag.js) - Google Analytics