基本概念
SQL注入漏洞是指,攻击者能够利用现有Web应用程序,将恶意的数据插入SQL查询中,提交到后台数据库引擎执行非授权操作。
主要危害
●非法查询、修改或删除数据库资源。
●执行系统命令。
●获取承载主机操作系统和网络的访问权限。
SQL注入漏洞的风险要高于其他所有的漏洞,原因如下。
●SQL注入攻击具有广泛性。SQL注入利用的是SQL语法,这使得所有基于SQL语言标准的数据库软件,包括SQL Server、Oracle、MySQL、DB2和Informix等,以及与之连接的网络应用程序,包括Active/Java Server Pages、PHP或Perl等都面临该类攻击。当然各种软件都有自身的特点,实际的攻击代码可能不尽相同。此外,SQL注入攻击的原理相对简单,介绍注入漏洞和利用方法的教程等资源非常多。这些因素造成近年SQL注入攻击的数量一直居高不下。
●相较于其他漏洞,对于SQL注入漏洞的防范要困难。例如,要实施缓冲区溢出攻击,攻击者必须首先能绕过站点的防火墙,而SQL注入内容往往作为正常输入的一部分,能够通过防火墙的控制审查,访问数据库进而获得数据库所在服务器的访问权。
防御措施
代码层漏洞防护
基本措施
-
采用强类型语言
,如Java、C#等强类型语言几乎可以完全忽略数字型注入。 -
尽可能避免使用拼接的动态SQL语句
,所有的查询语句都使用数据库提供的参数化查询接口。参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。 -
在服务器端验证用户输入的值和类型是否符合程序的预期要求
,
一般应验证以下内容。- 检查字段是否为空,要求其长度大于零,不包括行距和后面的空格。
- 检查字段数据类型是否符合预期要求,如所有HTTP请求参数或Cookie值的类型都应是字符串。
- 检查输入字段长度是否符合预期要求。
- 根据功能需求定义的允许选项来验证用户输入的数据。
- 检查用户输入是否与功能需求定义的模式匹配。
-
在服务器端对用户输入进行过滤
。针对非法的HTML字符和关键字,可以编写函数对其进行检查或过滤。- 需要检查或过滤的特殊字符至少应包含:
、&、;、$、%、@、'、"、,、\、+、*、\'(反斜杠转义单引号)、\"(反斜杠转义引号)、<>(尖括号)、()(小括号)、CR(回车符,ASCII0x0d)或LF(换行,ASCII0x0a)
。 - 需要检查或过滤的关键字至少应包含(不区分大小写):
and、exec、insert、select、delete、update、count、chr、mid、master、truncate、char、declare、backup或script
。
- 需要检查或过滤的特殊字符至少应包含:
-
避免网站显示SQL错误信息
,如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。 -
加固应用程序服务器和数据库
,利用最低权限账户与数据库连接。
安全规范
Web安全开发中应当遵循安全规范。文章来源:https://www.toymoban.com/news/detail-568726.html
使用专业的漏洞扫描工具进行安全性测试
常见的SQL注入漏洞扫描工具如下。文章来源地址https://www.toymoban.com/news/detail-568726.html
-
SQLMap(http://sqlmap.sourceforge.net)
:一款被称为SQL注入第一神器的开放源代码工具,可以自动探测和利用SQL注入漏洞及接管数据库服务器的过程。SQLMap支持多种数据库、多种类型和模式的注入。 -
Pangolin(中文译名“穿山甲”)
:一款目前国内使用率很高的SQL注入测试软件。它能够通过一系列简单的操作,完成从检测注入到控制目标。
到了这里,关于浏览器安全之SQL注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!