|
知识路径: > 网络信息安全概述 > 网络信息安全目标与功能 > 网站安全需求分析与安全保护工程 > Web应用漏洞分析与防护 > Web应用漏洞防护 >
|
考试要求:熟悉
相关知识点:3个
|
|
|
|
SQL注入攻击(SQL Injection Attack)主要指利用连接后台数据库中的Web应用程序漏洞,插入恶意SQL语句,以实现对数据库的攻击。例如,假设某网站有如下服务:
|
|
|
|
|
|
正常情况下,数据库对外部查询请求对应的执行程序是:
|
|
|
|
此时,查询用户只能得到food相关的信息。但是,如果一个恶意的用户提交如下请求:
|
|
|
|
|
|
查询用户通过该SQL语句不仅得到food的相关信息,而且得到product表的所有信息。
|
|
|
SQL注入攻击的主要特点是攻击者通过利用Web应用程序中未对程序变量进行安全过滤处理,在输入程序变量的参数时,故意构造特殊的SQL语句,让后台的数据库执行非法指令,从而可以操控数据库内容,达到攻击目的。SQL注入攻击的防范方法如下:
|
|
|
(1)对应用程序输入进行安全过滤。对网站应用程序的输入变量进行安全过滤与参数验证,禁止一切非预期的参数传递到后台数据库服务器。安全过滤方法有两种:
|
|
|
. 建立程序输入黑名单。拒绝已知的恶意输入,如insert、update、delete、or、drop等。
|
|
|
. 建立程序输入白名单。只接收已知的正常输入,如在一些表单中允许数字和大、小写字母等。
|
|
|
(2)设置应用程序最小化权限。SQL注入攻击用Web应用程序权限对数据库进行操作,如果最小化设置数据库和Web应用程序的执行权限,就可以阻止非法SQL执行,减少攻击的破坏影响。同时,对于Web应用程序与数据库的连接,建立独立的账号,使用最小权限执行数据库操作,避免应用程序以DBA身份与数据库连接,以免给攻击者可乘之机。
|
|
|
(3)屏蔽应用程序错误提示信息。SQL注入攻击是一种尝试攻击技术,攻击者会利用SQL执行尝试反馈信息来推断数据库的结构以及有价值的信息。在默认情况下,数据库查询和页面执行中出错的时候,用户浏览器上将会出现错误信息,这些信息包括了ODBC类型、数据库引擎、数据库名称、表名称、变量、错误类型等诸多内容,如下图所示。
|
|
|
|
|
因此,针对这种情况,应用程序应屏蔽掉错误信息显示到浏览器上,从而可以避免入侵者获取数据库内部信息。
|
|
|
(4)对开源Web应用程序做安全适应性改造。利用开源网站应用程序进行安全增强,避免攻击者无须猜测就可以知道网站后台数据库的类型以及各种表结构,进而较容易地进行SQL注入攻击。
|
|
|