论文部分内容阅读
【摘要】SQL注入攻击已经成为对动态网站的主要信息攻击方式之一,本文提出SQL注入攻击的防范策略:安全的用户管理与验证、数据写入的视图控制和数据提交的合法性检测以及新的系统结构设计。
【关键词】SQL;注入攻击;攻击防范
1引言
目前,,攻击者通过对后端的数据注入,不仅可以篡改、加载信息,恶意传播不良内容(如黄色、淫秽内容,法轮功等反动宣传资料),还可以种植后门程序,严重影响网站的正常运行甚至导致网站崩溃。因此,研究注入攻击的应对策略对保障动态网站的信息安全具有重要意义。本文结合数据库系统的安全管理方案和写入控制探讨一种具有普遍意义的SQL注入攻击的防范策略。
2 SQL注入攻击
SQL注入攻击是指攻击者在客户端精心编写一些语法结构合法的SQL语句并在这些SQL语句之中加载攻击代码,利用网站的漏洞,成功绕过或骗取网站的用户验证,直接进入后端的网站数据库系统执行未经授权的数据读写。风险主要来自前端设计不严密的forms的各类表单域和不经验证即进入系统的GET参数,攻击者通过在各类表单域或页面请求的查询字符串构造SQL条件,欺骗服务器执行恶意的SQL命令并取得和提升对数据库服务器的权限,最终控制系统。
3 SQL注入攻击防范策略
3.1 用户验证和管理
目前的动态网站用户身份验证的方法一般是:用关系表存储所有用户,当需要用户验证时,以前端表单或查询字符串提供的用户名和口令从关系表里提取数据,若获得的数据集非空,则通过验证,否则拒绝用户登录。这种用户验证管理很容易成为注入攻击的入口,尽管前述各类方案对此提出了各种防范措施,但还是为注入攻击留下隐患,一个显而易见的风险是当用户登录网站成功而忘记安全退出时,攻击者在同一会话里不需要验证登录便可轻易实施对数据库的注入攻击。本文将网站的用户和数据库用户统一起来,当为系统添加一个新用户时,为其生成一个登录名,并将该登录授权为业务数据库的用户,以SQL Server为例,可由系统管理员或安全管理员用如下系统存储过程完成:
sp-addlogin <用户名>, <用户口令>
sp-grantdbaccess <用户名>, <用户名>
在网站程序设计中,登录界面简化为只是接收用户名和口令的输入,不作额外验证,当有读写行为时,用户的验证代之以数据库链接字符串:
Provider = SQLOLEDB.1; DataSource = <服务器名>; Initial Catalog = <数据库名>; UID=<用户名>;PWD=<用户口令>
3.2数据写入的视图控制
考察如下几组对应关系及其规则:
Ui→Di;某个用户有其特定的数据域。
Pi→Ui;某个用户可被授予有限的权限。
Vi→Di;对某个数据域的读写可通过特定的虚拟表(视图)完成,而不使用实际的数据表。
Pi→Vi;某个视图可被授予有限的权限。
通过该模型,在上一节完成用户的登录名设置和授权为业务数据库用户后,可以按照如下步骤设置视图的访问控制,以预防SQL注入攻击:
(1)为每个用户设置一一对应的视图,如有用户kingwen,将设置视图v_kingwen,v_kingwen将作为kingwen访问其对应的数据域的唯一窗口。用如下语句完成:
Create view <对应的视图名> as select <数据域字段列表> from <表1,表2…> where <数据域查询条件>
(2)回收用户的所有权限,并把对某一视图的访问权限严格授予给与之相对应的用户,一旦系统回收对某个视图的授权,与之对应的用户也就不能对数据库进行任何存取操作。用如下语句完成:
Revoke all from <用户名>
Grant select,update on <对应的视图名>to <用户名>
(3)当某一用户登录系统,将它与对应的视图绑定起来,其访问数据库按照对应视图名取得数据集,而非通过实际的数据表名。
3.4网站系统结构设计
为了减少SQL注入攻击的风险,数据库服务器应尽量隐藏起来。一个策略是将Web服务器和数据库服务器分离,在路由设置上,只允许Web服务器开放对外端口,而将数据库服务器放置在内网里,这样便可屏蔽来自外网的攻击者对数据库服务器的直接访问。而在Web服务器设置上,关闭其具详细的出错信息,代之以笼统的HTTP 500错误提示,以避免攻击者探测到数据库服务器的名称和实际地址。在数据库服务器方面,删除或以只有系统管理员才能识记的名称更改权限很高的系统存储过程(如SQL Server的xp-cmdshell)。这样一个安全的网站系统结构设计如图2。
4结束语
本文作者的创新点在于从数据库服务器的安全读写的视角提出一个新的应对预防策略,从安全的用户管理与验证、数据写入的视图控制和数据提交合法性检测以及系统结构设计等方面保障网站的数据安全。防范SQL注入攻击本质上是对数据库系统安全性保护和数据写入控制,由于该方案着重于后端数据库服务器系统的安全,是具有普遍意义的,普遍适用于使用Oracle、SQL Server、DB2、MySql等主流数据库系统构建的动态网站和其他网络系统。
【参考文献】
[1] 戴诗发.校园网SQL注入攻击与防范技术研究[J].昆明理工大学学报(理工版),2005,30(3):72-75
[2] 陈运栋.谈Sql注入式攻击的典型手法和检测防范措施[J].微型电脑应用,2004,20(9):13-15
[3] 张勇,李力,等.Web环境下SQL注入攻击的检测与防御[J].现代电子技术,2004,15:103-105,108
作者简介:黄红梅(1978--),女,江西新余人,助教,研究方向:计算机理论与应用
责任编辑:王利强
【关键词】SQL;注入攻击;攻击防范
1引言
目前,,攻击者通过对后端的数据注入,不仅可以篡改、加载信息,恶意传播不良内容(如黄色、淫秽内容,法轮功等反动宣传资料),还可以种植后门程序,严重影响网站的正常运行甚至导致网站崩溃。因此,研究注入攻击的应对策略对保障动态网站的信息安全具有重要意义。本文结合数据库系统的安全管理方案和写入控制探讨一种具有普遍意义的SQL注入攻击的防范策略。
2 SQL注入攻击
SQL注入攻击是指攻击者在客户端精心编写一些语法结构合法的SQL语句并在这些SQL语句之中加载攻击代码,利用网站的漏洞,成功绕过或骗取网站的用户验证,直接进入后端的网站数据库系统执行未经授权的数据读写。风险主要来自前端设计不严密的forms的各类表单域和不经验证即进入系统的GET参数,攻击者通过在各类表单域或页面请求的查询字符串构造SQL条件,欺骗服务器执行恶意的SQL命令并取得和提升对数据库服务器的权限,最终控制系统。
3 SQL注入攻击防范策略
3.1 用户验证和管理
目前的动态网站用户身份验证的方法一般是:用关系表存储所有用户,当需要用户验证时,以前端表单或查询字符串提供的用户名和口令从关系表里提取数据,若获得的数据集非空,则通过验证,否则拒绝用户登录。这种用户验证管理很容易成为注入攻击的入口,尽管前述各类方案对此提出了各种防范措施,但还是为注入攻击留下隐患,一个显而易见的风险是当用户登录网站成功而忘记安全退出时,攻击者在同一会话里不需要验证登录便可轻易实施对数据库的注入攻击。本文将网站的用户和数据库用户统一起来,当为系统添加一个新用户时,为其生成一个登录名,并将该登录授权为业务数据库的用户,以SQL Server为例,可由系统管理员或安全管理员用如下系统存储过程完成:
sp-addlogin <用户名>, <用户口令>
sp-grantdbaccess <用户名>, <用户名>
在网站程序设计中,登录界面简化为只是接收用户名和口令的输入,不作额外验证,当有读写行为时,用户的验证代之以数据库链接字符串:
Provider = SQLOLEDB.1; DataSource = <服务器名>; Initial Catalog = <数据库名>; UID=<用户名>;PWD=<用户口令>
3.2数据写入的视图控制
考察如下几组对应关系及其规则:
Ui→Di;某个用户有其特定的数据域。
Pi→Ui;某个用户可被授予有限的权限。
Vi→Di;对某个数据域的读写可通过特定的虚拟表(视图)完成,而不使用实际的数据表。
Pi→Vi;某个视图可被授予有限的权限。
通过该模型,在上一节完成用户的登录名设置和授权为业务数据库用户后,可以按照如下步骤设置视图的访问控制,以预防SQL注入攻击:
(1)为每个用户设置一一对应的视图,如有用户kingwen,将设置视图v_kingwen,v_kingwen将作为kingwen访问其对应的数据域的唯一窗口。用如下语句完成:
Create view <对应的视图名> as select <数据域字段列表> from <表1,表2…> where <数据域查询条件>
(2)回收用户的所有权限,并把对某一视图的访问权限严格授予给与之相对应的用户,一旦系统回收对某个视图的授权,与之对应的用户也就不能对数据库进行任何存取操作。用如下语句完成:
Revoke all from <用户名>
Grant select,update on <对应的视图名>to <用户名>
(3)当某一用户登录系统,将它与对应的视图绑定起来,其访问数据库按照对应视图名取得数据集,而非通过实际的数据表名。
3.4网站系统结构设计
为了减少SQL注入攻击的风险,数据库服务器应尽量隐藏起来。一个策略是将Web服务器和数据库服务器分离,在路由设置上,只允许Web服务器开放对外端口,而将数据库服务器放置在内网里,这样便可屏蔽来自外网的攻击者对数据库服务器的直接访问。而在Web服务器设置上,关闭其具详细的出错信息,代之以笼统的HTTP 500错误提示,以避免攻击者探测到数据库服务器的名称和实际地址。在数据库服务器方面,删除或以只有系统管理员才能识记的名称更改权限很高的系统存储过程(如SQL Server的xp-cmdshell)。这样一个安全的网站系统结构设计如图2。
4结束语
本文作者的创新点在于从数据库服务器的安全读写的视角提出一个新的应对预防策略,从安全的用户管理与验证、数据写入的视图控制和数据提交合法性检测以及系统结构设计等方面保障网站的数据安全。防范SQL注入攻击本质上是对数据库系统安全性保护和数据写入控制,由于该方案着重于后端数据库服务器系统的安全,是具有普遍意义的,普遍适用于使用Oracle、SQL Server、DB2、MySql等主流数据库系统构建的动态网站和其他网络系统。
【参考文献】
[1] 戴诗发.校园网SQL注入攻击与防范技术研究[J].昆明理工大学学报(理工版),2005,30(3):72-75
[2] 陈运栋.谈Sql注入式攻击的典型手法和检测防范措施[J].微型电脑应用,2004,20(9):13-15
[3] 张勇,李力,等.Web环境下SQL注入攻击的检测与防御[J].现代电子技术,2004,15:103-105,108
作者简介:黄红梅(1978--),女,江西新余人,助教,研究方向:计算机理论与应用
责任编辑:王利强