方友志
摘要:该文介绍了Web应用中SQL注入 攻击的原理、SQL注入攻击带来的危害,并针对如何防范SQL注入攻击提出了有效的方法,以降低Web应用受到SQL注入攻击的风险,更好地保护高校中Web应用的安全和使用。
关键词:Web应用;SQL注入;注入攻击;注入防范
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)29-0040-02
随着高校信息化、数字化校园建设的不断推进,高校校园网中部署的各种Web门户网站及教学应用平台数量逐渐增多,由于开发这些应用的程序员水平和经验参差不齐,其中一部分程序员在编写相应的代码时没有对用户输入的数据进行合法性检查,导致一些Web应用程序存在SQL注入安全漏洞,容易受到来自互联网的SQL注入攻击,对校园网中各Web应用系统数据信息安全构成重大威胁。本文对Web應用中常见的SQL攻击原理及防范技术进行分析研究。
1SOL注入攻击原理
SQU结构化查询语言)是一种数据库查询语言,所谓的SQL注入攻击就是专门对Web应用后台数据库的一种攻击行为。攻击者利用搜索引擎在Web应用系统中通过手工或者SQL注入工具进行测试,寻找Web应用中存在的SQL注入漏洞及可注入点,并判断其数据库类型,其次在构造一些特殊字符串通过网页或其他方式传递给Web应用系统,从而实现对Web应用系统数据库的非法访问或操作。SQL注入攻击的产生主要是因为某些Web应用系统数据库的外部接口没有对用户输入的数据进行有效验证。比如先前互联网上出现的很多网站用户数据泄露大多都是通过这种方式实现的。
下面以一个Web应用系统的登录页面为例来阐述SQL注入攻击原理,一般的Web应用系统的登录验证页面都有user-name和password两个参数用于输入登录系统的用户名和密码,系统通过查找数据库中login表里存放的数据来比对用户输入的用户名和密码进行授权操作。常见的用于验证用户登录身份合法的SQL语句为:
select count(*)from login where username='usernameandpassword=password
假设正确的系统管理员用户名和密码分别为ad-min,admin888,那么传输到后台用于验证的SQL语句为:
select count(*)from login where usertmme='adminand pass-word='admin888'
通过上述的语句可以看到该方法中的usernalne和pass-word的值是没有经过任何验证,直接将前端用户输入的数据以字符串的形式拼接在一起形成SQL验证语句,这样的语句存在注入漏洞,且风险非常大。下面就是一个针对绕过这种验证方式以admin身份登录系统的SQL语句:
select count(*)from login where username='admin'--andpassword='23456'
在上述语句中进行了两个判断,即username='admin'和password='123456',当两个都为“真”时,整个语句结果就为“真”,但上述输入的密码是'123456'显然是不正确的,因为使用了注释符“--”,在注释符之后的语句将忽略不被执行,即se-lect count(*)from login where username='admin结果肯定为“真”,从而通过验证达到登录系统的目的。
2SQL注入攻击的危害
SQL注入攻击的主要目的不是Web应用系统的服务器,而是想得到Web应用系统最高的管理员权限及数据库中的重要数据。攻击者发现Web应用中的漏洞,进行SQL注入攻击,一旦攻击成功,拿到权限便会给Web应用系统中数据信息的安全带来危害。尤其是在高校中,带来的危害主要有以下四点:
1)在未授权的情况下获得高校校园网中各种Web应用系统权限,非法读取、篡改、添加、删除数据库中的数据;
2)非法盗取高校校园网中各种Web应用系统数据库中的重要数据及师生个人信息等敏感信息以获取利益;
3)修改学校门户网站及各种Web应用系统网页内容,发布虚假广告信息和挂马等;
4)上传木马病毒或者webshell,留下后门,进而控制相应的Web应用服务器。
3高校web应用中如何防范sQL注入攻击
3.1从Web应用系统程序本身上进行防范
1)数据库权限进行分级控制。各个级别的用户只给访问数据库的web应用功能所需的最低权限,只能对授权给自己的数据进行查询、增删等操作,防止未授权用户对数据库非法操作。
2)用户输入的数据进行有效性验证。比如对接收的数据类型有明确要求或限制的,要进行数据类型有效验证,如数值型、日期型、英文或数字等;对数据长度有限制的,如只允许输入10字符,那么就要严格控制输入的内容在10个字符以内,因为一般SQL注入攻击的语句是有一定的长度的,通过这样限制后会增加注入攻击的难度。
3)屏蔽Web应用系统错误提示信息返回页面。一般攻击者会通过网页提交一些攻击代码后,根据服务器返回的错误提示信息,获取一些关于Web应用系统的有用信息,为下一步攻击做准备,因此在程序开发中应通过自定义错误提示信息页或屏蔽错误提示信息页来防止攻击者通过这种方式获取有用信息。
4)删除Web应用系统中一些不安全和不必要的存储过程。攻击者SQL注入攻击成功后,变会利用xp_cmdshell之类的存储扩展来获取服务器权限。
5)过滤掉所有敏感字符串及单引号,来防止攻击者非法登陆。
6)对数据库中的重要信息进行加密,提高数据的安全性。
3.2从Web应用系统管理上进行防范
1)系统管理员应加强自我学习,了解及掌握相关领域安全方面的最新消息,及时更新相应漏洞和补丁。
2)使用漏洞扫描工具,扫描Web应用系统中的SQL注入漏洞,做到及时更新,提前防范。
3)安装安全软件和Web应用防火墙,通过它们对服务器和Web应用进行实时监控,能够及时屏蔽和阻止外来的攻击。
4结束语
随着互联网技术的发展,Web应用越来越多,一些新型的SQL注入攻击方法也随之诞生,对于Web应用中SQL注入攻击的防范不能止于眼前。因此,在应用开发时就应尽量采用先进的技术,后期在使用时还应该综合运用安全软件、Web防火墙、漏洞扫描等相关技术进行辅助防范,才能将SQL注入攻击的风险降至最低,以保证Web应用系统的安全。