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. 更多文章请扫码:
相关推荐
了解并掌握SQL注入的各个方面,是保障Web应用安全的关键步骤。作为测试人员,我们应该在开发阶段就积极参与,进行详尽的安全测试,以预防此类问题的发生。同时,教育开发者养成良好的编程习惯,提高整体的安全意识,...
"Web安全开发:SQL注入攻击和网页挂马" 在Web应用程序中,安全是最重要的考虑因素之一。SQL注入攻击和网页挂马是两种常见的Web安全威胁,了解它们对Web安全的影响至关重要。下面我们将详细介绍SQL注入攻击和网页...
SQL注入是一种常见的网络安全威胁,针对Web应用程序,尤其是那些依赖数据库存储和检索信息的系统。攻击者通过构造恶意的SQL查询,插入到用户输入字段中,从而控制或操纵数据库,获取敏感信息,甚至对数据进行修改。...
Web安全是保障互联网应用及其数据安全的关键领域,而SQL注入是一种常见的网络安全威胁,攻击者通过构造恶意的SQL语句来欺骗服务器,获取未经授权的数据或执行非法操作。以下将详细阐述SQL注入的基础知识及其防范措施...
### Web安全之SQL注入 #### 一、理解SQL注入及其原理 SQL注入是一种常见的Web应用程序安全漏洞,它允许攻击者将恶意SQL代码插入到查询中,以操纵数据库的行为或提取敏感信息。这种攻击之所以能够成功,主要是由于...
SQL注入是一种常见的网络安全威胁,主要针对使用SQL(结构化查询语言)的Web应用程序。这种攻击手段是由于应用程序在处理用户输入时没有进行充分的验证和过滤,使得攻击者可以插入恶意的SQL代码,从而控制或操纵...
3. 时间延迟型 SQL 注入:使用时间延迟来注入 SQL 语句。 4. 布尔盲注:使用布尔逻辑来注入 SQL 语句。 七、SQL 注入常用知识: 1. 注释符:#、--、+ 等符号。 2. 联合查询:使用 UNION keyword 来连接两个查询...
web渗透: SQL注入(上) web渗透: SQL注入(下) web渗透: XML注入攻击 web渗透: XXE外部实体注入 web渗透: 服务器端包含注入(SSI注入) web渗透: XPath注入 web渗透: 命令注入 web渗透: HTTP响应头拆分漏洞 web...
Web应用安全,特别是SQL...综上所述,理解SQL注入的原理和避免方法对于构建安全的Web应用至关重要。开发者需要谨慎处理用户输入,使用安全编程实践,并时刻关注数据库的权限管理和安全配置,以防止此类安全漏洞的发生。
【Web应用安全:SQL注入攻击篡改数据】 SQL注入攻击是一种常见的网络安全威胁,攻击者通过在Web应用程序的输入字段中插入恶意SQL代码,以获取未经授权的数据访问或控制系统。本实验旨在让学生了解并实践SQL注入的...
计算机病毒与防护是网络安全领域的重要话题,而SQL注入漏洞则是其中一种常见的攻击手段。SQL注入漏洞允许攻击者通过构造恶意的SQL语句,利用应用程序的缺陷来操纵或获取数据库中的敏感信息。本讲座将深入探讨如何...
因此,开发人员需要确保Web应用对用户输入进行充分的验证和过滤,使用参数化查询或预编译语句来防止SQL注入攻击。 为了保证Web应用的安全性,开发者应遵循最佳实践,比如: - 使用预编译的SQL语句,避免将用户输入...
### Web安全性测试SQL注入高级篇知识点详解 #### 一、SQL Server高级注入技巧 ##### 1. 利用系统表和存储过程 - **利用`xp_cmdshell`存储过程** - **示例1**: `http://Site/url.asp?id=1;exec master..xp_cmd...
6. **应用程序安全框架**:使用安全的Web开发框架,这些框架通常已经内置了防止SQL注入的安全措施。 7. **代码审计**:定期审查代码,查找并修复潜在的SQL注入漏洞。 总的来说,SQL注入是一种严重的安全威胁,对于...
Web应用安全领域中,SQL注入是一种常见的攻击手段,它允许攻击者通过输入恶意的SQL代码来操纵或获取数据库中的敏感信息。在这个主题中,我们将详细探讨如何使用SQL注入来绕过认证过程,主要关注两类注入——数字型...
Sqlserver盲注是其中一种常见的安全漏洞,发生在SQL注入攻击中,但无法通过前端页面直接获取反馈信息。攻击者需通过特定的技术手段来判断是否存在注入点以及如何利用这些点。 1. **什么是SQL盲注?** SQL盲注是指...
Web应用安全领域中,SQL注入是一种常见的攻击手段,它允许恶意用户通过构造特定的SQL语句,绕过系统的身份验证,获取或修改数据库中的敏感信息。以下是对"使用SQL注入绕过认证"实验的详细说明: 一、实验目的 1. ...
SQL 注入入门篇 SQL 注入是指攻击者通过构造特殊的 SQL 语句, Inject 到服务器的数据库中,来获取...SQL 注入攻击可以导致敏感数据的泄露和修改,损害服务器的安全性和可用性。因此,防御 SQL 注入攻击是非常重要的。
然而,由于开发者对安全性的忽视,使得许多Web应用程序存在安全隐患,其中SQL注入攻击是最常见也是最危险的一种攻击方式之一。SQL注入攻击能够使攻击者绕过正常的认证机制,获取敏感信息或控制服务器,对企业和个人...
【SQL注入】是一种常见的网络安全威胁,它发生在攻击者通过输入恶意的SQL语句来操纵数据库系统,获取未经授权的数据,甚至篡改或删除信息。在Web应用程序中,如果开发者没有正确地过滤用户输入,就可能为SQL注入攻击...