当前位置:首页 期刊杂志

图书馆网站如何避免SQL注入攻击

时间:2024-07-06

陈天文

(潍坊市图书馆,山东 潍坊 261041)

随着计算机和网络技术的日益发展,网络化、数字化成为图书馆发展的重要方向,图书馆网站建设成为其中不可缺少的重要组成部分。图书馆网站不但是图书馆实现对外交流的窗口,也是图书馆革新检索和服务方式、更好地为读者提供信息服务的桥梁和纽带。目前,图书馆网站已从早期提供简单信息服务转化为能根据用户需要提供动态的、具有交互功能的特定服务,如联合编目、网上流通、网上参考咨询、电子资源的管理与发布、视频点播等。在网站建设过程中,由于开发水平及管理经验参差不齐,部分网站开发人员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患,网站容易遭受不同程度的SQL注入攻击。SQL注入攻击由于其广泛性、易学性、难捕获性已经逐渐成为互联网上主流的黑客攻击方式,因此有必要结合图书馆网站自身特点,了解SQL注入攻击的原理,尽可能多地采取防范措施,并在遭受攻击后能采取行之有效的恢复措施,以保证网站的正常运行。

目前图书馆网络安全系统主要采用的是以防火墙为主的被动管理,即根据设定的规则,对流入网络中的流量进行过滤,从而防止非法行为的入侵。防火墙的作用只是对访问对象进行认证,而对于网站本身存在的软件问题,入侵者依然可以在遵守防火墙访问规则的前提下实施攻击,所以防火墙并不能解决所有的安全问题。

1 SQL注入原理及其目的

1.1 什么是SQL注入

所谓SQL注入,就是在客户端通过把SQL命令插入到Web表单递交或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,即通过递交参数构造巧妙的SQL语句,从而成功获取想要的数据。

1.2 SQL注入的目的

SQL注入目的是获取管理员的账号和密码,后果轻则导致敏感信息的泄漏,重则整个服务器受他人控制。一旦网站服务器被注入成功,网站会出现以下几种后果:①重要信息被人窃取;②数据记录被篡改;③网站文件被插入“尾巴”,登录网站时转向其他网站或传播病毒;④网站服务器被挂“木马”程序;⑤网站服务器全面瘫痪。

2 图书馆网站类型

目前图书馆网站主要分为4类:①网站全部由静态页面组成,此类网站在功能上起到展示的作用,更新比较复杂,功能比较单一。②通过中间件产品,如TRS、清华同方WCCM等内容管理系统进行二次开发或通过自主开发的中间件产品,在服务器端发布数据时自动生成静态网页,用户在客户端访问的全部是静态网页。③通过下载网站模板源代码进行修改建站。④通过ASP、PHP等技术自主开发动态网站。

目前全国省级以上公共图书馆采用第一种、第三种方式建站的很少;采用第二种方式建站的有国家图书馆、首都图书馆、辽宁、福建、山西、湖北、河北、陕西、黑龙江、吉林、河南、青海、香港共13家;采用第四种方式建站的有甘肃、江西、云南、四川、海南、上海、内蒙古、新疆、西藏、广东、青岛、台湾、浙江、贵州、澳门共15家;其余图书馆采用JSP等其他技术。第二种方式是近年来比较流行的建站方式,安全性较高,该方式与ASP、PHP技术的区别在于所有数据在服务器发布处理完毕后生成静态网页,客户端访问时没有对数据库的操作,不像ASP等技术根据用户请求需要对数据库进行相应的操作,从而最大可能地减少了对数据库的攻击。目前,国内大型门户网站全部采用这种方式建站。ASP技术由于灵活性、易用性,在图书馆网站的应用也比较广泛。ASP技术是构建网站的主流技术,特别是asp.net技术的推出提供了更为广阔的空间,第二种建站方式的网站后台管理系统也较多采用asp.net等技术。

3 SQL注入攻击的主要对象及其方法

对于全部由静态网页组成的网站,主要用来发布图书馆简单信息,通过FTP实现更新操作,所以保管和设置好FTP密码即可。第二类网站,由于这类商品软件经过严格测试,技术比较成熟。其次,在前台呈现的大多是静态页面,遭受攻击的可能性较小,这类网站管理好后台登录系统的入口及密码是关键。第三四类网站是SQL注入的主要对象。

SQL注入操作比较简单,特别是网上流行的啊D注入工具、HDSI等能够自动分析网页是否存在注入漏洞及其数据库类型。在实际操作中,如果是针对Access数据库,可以对表名、字段名、字段值进行逐个猜测,接着用函数来计算数据并将它们还原;如果是MSSQL数据库,由于所有的列表都保存在特定的位置,可以直接通过暴库的方法来获取。图1、图2分别为唐山图书馆ACCESS注入检测(图1)和荆门图书馆MYSQL注入检测(图2)界面及其结果。

图1 ACCESS注入检测

图2 M YSQL注入检测

4 避免SQL注入攻击的主要措施

4.1 在开发网站系统时使用类、存储过程等面向对象的概念实现数据库的访问可以有效防止SQL注入漏洞

面向对象的程序设计思想在一定程序上包含对输入的数据进行有效性检验及上下文的对比分析,并且能够重复调用,所以提高了代码效率,减少了由于多次重写代码而存在危险性的机率。

4.2 系统设计要严密,避免出现错误信息

入侵者根据错误提示很容易得到有关数据库的相关信息。如以下错误信息:

MicrosoftOLEDBProviderforODBCDrivers(0x80040E07)

[Microsoft][ODBC SQL Server Driver]

[SQL Server]将nvarchar值'sonybb'转换为数据类型为int的列时发生语法错误。

/lawjia/show.asp,第 47行

根据这个出错信息,可以获得以下信息:该站使用MS_SQL数据库,用ODBC连接,连接账号名为sonybb。获得这些信息对下一步的SQL注入提供了重要数据,故始终通过测试类型、长度、格式和范围来验证用户输入,过滤用户输入的内容,防止出现系统错误提示,这是防止SQL注入式攻击的常见并且行之有效的措施,同时在客户端和服务器端都执行验证,之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。

4.3 布署防注入系统

如网上流行的SQL通用防注入系统,能够自动封杀注入者IP,使注入者不能再访问本站。同时可以查看入侵者提交数据记录,解除对注入者IP等。

该系统代码使用方法很简单,只要在需要防注入的页面头部插入

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!