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. 更多文章请扫码:

时间: 2024-12-29 16:55:44

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

浅谈Web安全-SQL注入

简单的说一下我对Web安全的了解,主要是代码注入方面. SQL注入 简介: SQL攻击(SQL injection),简称为注入攻击,是发生于应用程序数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵. 简单的说,所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.例如:如果用户在

[Web安全]SQL注入

Web网站最头痛的就是遭受攻击.Web很脆弱,所以基本的安防工作,我们必须要了解! 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 通过一下的例子更形象的了解SQL注入: 有一个Login画面,在这个Login画面上有两个文本框分别用来输入用户名和密码,当用户点了登录按钮的时候,会对输入的用户名和密码进行验证.验证的SQL语句如下:       select * from student where userna

渗透攻防Web篇-SQL注入攻击初级

不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一,这里我想问,我们真的了解SQL注入吗?看完本篇文章希望能让你更加深刻的认识SQL注入. 注入攻击原理及自己编写注入点 1.1.什么是SQL?SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL 可与数据库程序协同工作,比如 MS Access.DB

Web实验 sql注入

? 数字型注入(POST): 数据库使用数字进行查询,尝试3 or 3来选择全部 字符型注入(GET): 通过字符进行查询,用kobe' or '1'='1尝试去掉查询字段两边的引号 发现可以注入 搜索型注入: ? 可能使用了like来确定查询范围 比如select 字段1,字段2 from 表名 where username like '%$name%' 我们用 k%'or 1=1#来进行尝试闭合 XX型注入: 通过后台可以发现使用了括号括住查询字段 我们对括号进行闭合 kobe') or 1

Web漏洞-SQL注入

原文地址:https://blog.51cto.com/10945453/2391352

【渗透攻防Web篇】SQL注入攻击高级

前言 前面我们学习了如何寻找,确认,利用SQL注入漏洞的技术,本篇文章我将介绍一些更高级的技术,避开过滤,绕开防御.有攻必有防,当然还要来探讨一下SQL注入防御技巧. 目录 第五节 避开过滤方法总结 5.1.大小写变种 5.2.URL编码 5.3.SQL注释 5.4.空字节 5.5.二阶SQL注入 第六节 探讨SQL注入防御技巧 6.1.输入验证 6.2.编码输出 正文 第五节 避开过滤方法总结 Web应用为了防御包括SQL注入在内的攻击,常常使用输入过滤器,这些过滤器可以在应用的代码中,也可以

sql注入初中高学习

以下三篇文件关于SQL注入写的很通俗易懂,整理收藏下 渗透攻防Web篇-SQL注入攻击初级: http://bbs.ichunqiu.com/thread-9518-1-1.html 渗透攻防Web篇-SQL注入攻击中级: http://bbs.ichunqiu.com/thread-9668-1-1.html 渗透攻防Web篇-SQL注入攻击高级: http://bbs.ichunqiu.com/thread-10093-1-1.html

SQL注入学习资料总结

转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html  什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言.1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准.不过各种通行的数据库系统在其实践过程中都

WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等

核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Webshell上传.命令注入.非法HTTP协议请求.非授权文件访问等.