• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 建筑房产 > 正文

    加强互联网攻击防范技能培养助职校生成才

    时间:2020-09-19 07:53:25 来源:达达文档网 本文已影响 达达文档网手机站

    摘 要:飞速发展的互联网及其相关应用,在为人们生活带来大量便利的同时,也带来了巨大的安全风险,攻击者利用Web应用程序的安全缺陷,攻击窃取网站数据库中的敏感数据。其中SQL注入攻击相对于其他攻击入侵手段入门容易,防火墙不能对其有效地进行防范,成为了黑客主要的攻击手段之一。教师要让学生了解SQL注入攻击的基本原理和防范方法,加强互联网攻击防范技能培养,助职校生成才。

    关键词:技能培养;SQL注入攻击;职校生成才

    随着计算机和互联网的普及,以协同工作环境、社会性网络服务及托管应用程序为代表的基于B/S模式(即Browser/Server结构)开发的WEB技术,在为人们生活带来大量便利的同时,也带来了巨大的安全风险,攻击者利用Web应用程序的安全缺陷,可以通过攻击Web应用程序,窃取网站数据库中的敏感数据,以及执行某些未授权的危险操作命令。

    据OWASP组织统计,包括SQL注入、恶意脚本注入、Shell注入和其他注入攻击在内的代码注入是针对Web应用程序的主流攻击技术之一。其中SQL注入攻击虽然早在1997年就已经被披露,相关的机构也极力完善与其相关的各种漏洞,但由于使用正常的WWW端口访问,使用的SQL语法漏洞与服务器平台及应用程序无关,技术难度不高,防火墙不能对其进行有效防范等特点,时至今日,依然是黑客的主要攻击手段之一。根据数据应用安全提供商Imperva公司2012年10月的网络攻击分析报告显示,在黑客论坛上所有的被关注的Web应用程序攻击技术中,SQL注入攻击的关注率高居榜首。

    而伴随国内互联网的飞速发展,导致该行业需要大量的程序员编写B/S应用程序满足市场要求。由于需求量大,入门门槛不高,因而国内许多职业技工学校开设了网站设计和网络管理类的专业,培养这方面的人员,满足市场要求。然而,相当大一部分程序员的水平及经验不足,在编写代码的时候,没有对潜在的安全隐患进行防范,可能导致网站轻易被攻破,造成严重的经济损失。因此,教师要让学生了解SQL注入攻击的基本原理和防范方法,加强互联网攻击防范技能培养,让职校生成为优秀的专业人才。

    一、SQL注入攻击原理

    SQL语言是一种一体化、高度非过程化的数据库数据访问的标准语言,提供了包括数据定义、数据操纵、数据控制以及最常用的数据查询在内的与数据库相关的全部功能,并且SQL除了以命令方式之外,还支持以嵌入其他程序设计语言中使用的方式。

    用户访问网络上的网页时,是通过后台服务器上使用类似于“Select 相关字段 from 表名 where 条件”的查询语句从后台数据库访问,从而获得用户所需的数据。在这过程中,由于查询语句是由服务器的代码和用户的输入组合生成的,如果利用SQL语言中的某些特殊转义字符,如单引号、分号,可能使得预先设定的限制无效,从而改变SQL查询语句的执行顺序,并执行某些非预期的SQL指令代码,造成数据库中的敏感信息被泄露或被篡改的严重后果。当攻击者能够通过往查询中插入一系列的SQL操作将数据写入到应用程序中去,并对数据库实施了查询,这时就构成了SQL注入(SQL Injection)。

    SQL注入攻击主要是通过构建特殊的输入,将SQL语法中的某些组合作为参数传入Web应用程序,通过执行SQL语句而执行入侵者想要的操作。以登录网站为例,假定网站将注册用户的编号、用户名及其对应的密码分别存放于名为login的表中的id、uname和psw字段中,处理用户登录的动态页面代码如下:

    InputUName = request.form(“uname”)

    InputPSW = request.form(“psw”)

    Set conn = Server.CreateObject(“ADODB.Connection”)

    Conn.open“Driver = {SQL Server};Server = WEBSVR;DataBase = WebDB;UID = sa;WD = 123”

    Set rso = server. CreateObject(“ADODB.RecordSet”)

    sql= “SELECT * FROM login WHERE uname=”’ & InputUName&’” AND psw =”’ & InputPSW &’””

    Rso.Open sql,cn

    if rso.eof then

    response.write(“login error: username or password incorrect”)

    else

    response.write(“login success”)

    end if

    输入用户名“guest”和密码“123456”后,提交到后台数据库的查询语句为:SELECT * FROM login WHERE uname=’guest’AND psw=’123456’.当表login存在guest 用户且其密码为123456,则输出登录成功的信息,反之输出错误提示。然而,如果攻击者用字符串“guest’ OR ‘1’=’1”代替原有的用户名和密码输入,则后台数据库组装的SQL语句将会变为:SELECT * FROM login WHERE uname=’guest’OR‘1’=’1’AND psw=’guest’OR‘1’=’1’. 显然WHERE子句由于表达式‘1’=’1’是永真式而失去了作用,不能起到判别用户是否合法的效果,所以攻击者即使不知道用户名和密码,也可以成功登录网站。

    二、SQL注入攻击过程

    学生先要了解SQL注入攻击过程,这样,才能进行有针对性地防范。SQL注入攻击可以手工输入,也可以通过如HDSI、Domain、NBSI等SQL注入攻击辅助软件,其实现过程可以归纳为以下几个阶段。

    (1)第一步:判断是否可以SQL注入。如果URL仅是对网页的访问,不存在SQL注入问题,如:http:// websitename/index.html就是普通的网页访问。只有对数据库进行动态查询的业务才可能存在SQL注入,如:http://websitename/filename.asp?id=xxx,其中?id=xxx表示数据库查询变量,这种语句会在数据库中执行,因此可能会给数据库带来威胁。

    (2)第二步:寻找SQL注入点。对于使用了动态查询访问数据库的页面,如果编写代码的程序员没有安全意识和检查变量类型及过滤转义字符,则攻击者可能利用这些漏洞,通过输入一些特殊语句,并根据输入特殊语句后浏览器返回信息,判断数据库类型,从而构建数据库查询语句找到注入点。

    寻找SQL注入点的经典查找方法是在有参数传入的地方添加诸如“and 1=1”“and 1=2”以及“’”等一些特殊字符,通过浏览器所返回的错误信息来判断是否存在SQL注入。如果返回错误,则表明程序未对输入的数据进行处理,绝大部分情况下都能进行注入。

    对于形如http://websitename/filename.asp?id=xxx 的动态网页, 通常数据库的SQL操作语句是Select colummnnames from tablenames where id=xxx.为了确定网页是否存在注入点,通常将参数xxx设为三种不同的字符串。①xxx’.在输入数据后加单引号,将会导致引号不匹配引起的SQL错误,网页将返回错误提示信息。②xxx’and‘1’=’1,后台SQL语句变为 Select colummnnames from tablenames where id=xxx and ‘1’=’1’。由于‘1’=’1’永真,不对查询产生影响,返回正常页面。③xxx’and‘1’=’2’,后台SQL语句变为 Select colummnnames from tablenames where id=xxx and‘1’=’2’。由于‘1’=’2’永假,查询语句查询不到任何信息,返回空白页面或错误信息。若三种输入都能获得攻击者预期的结果,则可以证明该网站缺乏严格的检查和过滤,存在注入点。

    (3)第三步:猜解用户名和密码。数据库中存放的表名、字段名都是有规律可言的。通过构建特殊数据库语句在数据库中依次查找表名、字段名、用户名和密码的长度,以及内容。这个猜测过程可以通过网上大量注入工具快速实现,并借助破解网站轻易破译用户密码。

    猜用户名与密码的内容最常用也是最有效的方法有:①ASCII码逐字解码法:虽然这种方法速度较慢,但肯定是可行的。基本的思路是先猜出字段的长度,然后依次猜出每一位的值。猜用户名与猜密码的方法相同。②简单法:猜用户名用HTTP:///news.asp?id=xx and (select top 1 flag from TestDB.dbo.admin where username>1) ,flag是admin表中的一个字段,username是用户名字段,此时news.asp工作异常,但能得到Username的值。③猜用户密码:HTTP:///news.asp?id=xx and (select top 1 flag from TestDB.dbo.admin where pwd>1) , flag是admin表中的一个字段,pwd是密码字段,此时news.asp工作异常,但能得到pwd的值。同样的方法,可以得到第二用户名的密码,第三个用户的密码等等,直到得到表中的所有用户的密码。

    (4)第四步:寻找WEB管理后台入口。通常WEB后台管理的界面不面向普通用户开放,要寻找到后台的登陆路径,可以利用扫描工具快速搜索到可能的登陆地址,依次进行尝试,就可以试出管理台的入口地址。

    (5)第五步:入侵和破坏。成功登陆后台管理后,接下来就可以任意进行破坏行为,如篡改网页、上传木马、修改、泄漏用户信息等,并进一步通过网络渗透等攻击技术,入侵数据库服务器获取公司或者企业机密数据信息,造成重大经济损失。

    三、SQL注入的检测

    SQL注入攻击检测分为入侵前的检测和入侵后的检测,入侵前的检测,可以通过手工方式,也可以使用SQL注入工具软件。检测的目的是为预防SQL注入攻击,而对于SQL注入攻击后的检测,主要是针对日志的检测,SQL注入攻击成功后,会在IIS日志和数据库中留下“痕迹”。

    数据库检查:使用HDSI、NBSI和Domain等SQL注入攻击软件工具进行SQL注入攻击后,都会在数据库中生成一些临时表。通过查看数据库中最近新建的表的结构和内容,可以判断是否曾经发生过SQL注入攻击。

    IIS日志检查:在Web服务器中如果启用了日志记录,则IIS日志会记录访问者的IP地址,访问文件等信息,SQL注入攻击往往会大量访问某一个页面文件(存在SQL注入点的动态网页),日志文件会急剧增加,通过查看日志文件的大小以及日志文件中的内容,也可以判断是否发生过SQL注入攻击。

    其他相关信息判断:SQL注入攻击成功后,入侵者往往会添加用户、开放3389远程终端服务以及安装木马后门等。可以通过查看系统管理员账号、远程终端服务器开启情况、系统最近日期产生的一些文件等信息来判断是否发生过入侵。

    四、SQL注入的防范

    综上所述,针对大多数的SQL注入攻击利用了应用程序没有对客户端输入进行严格的过滤和类型检查的特点,可以制定相应的输入验证机制,对客户端输入中的特殊字符、输入类型以及输入参数的长度进行严格检查和限制。

    具体而言,可以从以下几方面进行防范。

    ①使用参数编码机制封装客户端提交信息。利用客户端输入参数生成动态SQL语句时,注意参数的类型安全,明确指定输入参数的确切类型,使用安全的参数编码机制,用以保证输入能够正确地被编码。

    ②检查所有外部的输入,替换或删除敏感字符、字符串。对来自外部的输入,在服务器正式处理之前对提交数据的合法性进行检查,进行完备的检查过滤。对包含SQL语句的保留字符(如:引号、分号、百分号等)的语句进行限制,拒绝语句的执行或使用转义操作将这些符号转换为非保留字符。

    ③以存储过程、预编译SQL或ADO命令对象的形式代替应用程序中的动态SQL语句。在应用程序调用存储过程、预编译SQL或ADO命令对象时,客户端输入数据的形式必须遵守被调用的这些对象在程序中的上下文的限制,变量不是可以执行的脚本,因而大大增加了攻击者注入SQL代码的难度。

    ④加强SQL数据库服务器的配置和连接,屏蔽出错信息。1)加强SQL数据库服务器的配置及WEB应用程序的连接;2)避免将敏感的数据明文存放;3)以最小权限原则配置应用程序连接数据库的查询操作权限;4)移除Web服务器上默认的一些危险命令,例如ftp、cmd、wscript等,需要使用这些功能临时复制到相应目录;5)以不泄漏有价值信息的出错处理机制代替系统默认的出错提示。

    ⑤目录最小化权限设置,给静态网页目录和动态网页目录分别设置不同权限,尽量不给写目录权限。

    小结:SQL注入攻击可以说是一种漏洞,程序中的变量处理不当,对用户提交的数据过滤不足等,都可能造成这一漏洞。而如前文所述,SQL注入由于使用正常的WWW端口访问,防火墙不能对其有效地进行防范,相比于其他攻击入侵手段,攻击者能够更容易地通过用户提交的数据,将恶意的SQL命令注入到后台数据库,获得管理权限对目标数据库进行非法操作,修改和窃取目标数据库中的数据。并且相对于其他攻击手段,SQL注入攻击无须复杂的编程,需要掌握的相关知识更少,入门更容易。因而在其攻击方式被披露后,历经十余载,仍然是黑客入侵网站数据库的热门手段。

    在实践中,为防止SQL注入攻击,需要完善网站的应用代码,同时结合强化数据库服务器安全架构,监视记录数据库整个运行过程等多种方式,构建一个强大的防御体系,防止可能的SQL注入漏洞被攻击者利用。

    总之,教师要让学生了解SQL注入攻击的基本原理和防范方法,加强互联网攻击防范技能培养,让职校生早日成为优秀的计算机专业人才。

    参考文献:

    [1]诸葛建伟.网络攻防技术与实践[M].北京:电子工业出版社,

    2011.

    [2]何玉洁.数据库原理与应用[M].北京:机械工业出版社,2011.

    相关热词搜索: 互联网 职校 生成 防范 攻击

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网