王宝华12
山东临邑第一中学
摘 要:文章中主要分析了基于ASP网站建设时存在的主要安全问题,进一步对ASP 程序设计存在的问题的原因进行了分析,然后从不同的角度对问题做出了相对应的解决对策。
关键词:ASP 网站; 安全;隐患
ASP是微软推出的一种用来取代CGI的技术,是位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的、交互式的Web应用程序,被广泛应用在网上银行、电子商务、网上调查、网上查询、BBS、搜索引擎等各种互联网应用中。但是,使用ASP技术制作的站点的安全性问题一直都是Web站点安全问题的重要组成部分。下面就有关ASP网站的安全性问题作简单的分析。
1 Asp网站常见的安全问题和隐患
1.1 Asp源代码的安全隐患
由于ASP程序采用非编译性语言,大大降低了程序源代码的安全性。任何人只要进入站点,就可以获得源代码。目前甚至有很多整站下载的软件,很容易就能得到整站的源代码.
1.2数据库下载漏洞
在用Access做后台数据库时,通常把数据库名写在程序中。如:
DBPath=Server.MapPath("./lyb/lyb.mdb")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq="& DBPath
这样固然可以使程序更加的灵活、方便,但同时也给数据库带来了可能泄露数据源物理路径的安全隐患,万一有人拿到源程序,Access数据库的名字就一览无余了。
1.3 非法访问网站页面
ASP程序主要使用表单实现与用户交互,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。例如,使用IP为 192.168.1.10这台服务器,使用login.asp进入登录界面,通过 checkadmin.asp来验证用户和密码,如果用户和密码正确,就转入main.asp进行后台操作。这时,如果将所有的关卡都放在 checkadmin.asp,而对main.asp页面没有设防,则攻击者只要直接在地址栏输入http://192.168.1.10/admin/main.asp便可绕过验证,从而导致网站信息泄漏。
1.4页面缓存管理
如果浏览器设置了“浏览网页时首先查看本地缓冲区里的页面”,那么这种功能对合法用户可以加快浏览Web页面的速度,同时也给非法用户提供了一个越权浏览的机会。
1.5 .inc文件泄露问题
在网站设计中,为了便于管理和维护,一般将程序设计成多个模块,然后用服务器的包含文件命令<!--#include file=“*.*”-->将各个模块包含在某一特定程序中,通常将这些文件以*.inc形式命名。但是ASP脚本环境只能解释有特定后缀的文件,如*.asp、*.asa、*.htm等。对于.inc的文件,ASP环境无法对其解释。当用户浏览这些页面时,服务器则将其直接下载到本地浏览器,从而暴露了ASP程序的各种重要的信息。
1.6 网页过期管理
用户在使用网页的过程中,有可能会长时间离开计算机处理别的事情,这样会给别有用心的人有可乘之机。
2 Asp网站常见的安全问题的解决方法和建议
2.1源代码的安全隐患的解决
为了有效地防止ASP源代码泄漏,可以对ASP页面进行加密。一般有两种方法对ASP页面加密保护。
一种是用“脚本最小化法则”。即ASP文件中只缩写尽可能少的源代码,需要高级保密或商业用途的脚本部分被封装到一个COM/DCOM组件中,并在ASP脚本中创建该文件,进行调用相应的方法(method)即可。另一种方法是采用微软的Script Encoder对页面进行加密。使用组件技术存在的主要问题是每段代码均需组件化,操作比较繁琐,工作量较大,技术要求比较高;而使用Script Encoder对ASP页面进行加密,操作简单,收效良好。
2.2数据库下载漏洞的解决
为了避免数据库的下载漏洞,建议在ODBC 中设立数据源,再在程序中使用数据源名来打开数据库。这样在 ASP的程序文件中将不会直接涉及到数据库文件的物理路径,即使文件的源代码泄露,所能看到的也只是一个数据源的名称。 当然,这样是以牺牲程序的灵活性为代价的。
2.3非法访问网站页面问题解决
为防止未注册的用户绕过注册界面直接进入应用系统,可以采用Session对象进行注册验证,只有从上一个页面转进来的会话才能读取这个页面,因此我们应该在所有需要验证的ASP页面的开头处进行相应处理,一般用Session对象和Include声明联合实现。Session对象最大的优点是可以把某用户的信息保留下来,让后续的网页读取。
2.4页面缓存管理问题解决
对于重要的Web页面(如身份验证页面)必须禁止页面缓存,强制浏览器每次向Web服务器请求新页面。利用ASP的Response对象的Expires属性和Clear方法可解决这个问题,设置为:
Response.Expires=0
Response.Clear
Expires属性表示缓存页面的有效期,设为0表示立即过期,Clear表示清空缓冲区。
2.5 .inc文件泄露问题解决
对于.inc文件命名时,不要采用系统默认的或者有特殊含义或容易被用户猜测到的文件名,尽量使用无规则的英文字母,其次还可以对.inc文件内容进行加密,最后最好使用.asp或.asa文件代替.inc文件,使用户无法从浏览器直接观看文件的源代码,从而起到更好的保护作用。
2.6 网页过期管理问题解决
可以使用Session.Timeout=分钟数,过了这么长时间网页就失效了,前提是你用一个Session值来判断登录状态如Session.Timeout=20。这样不仅保证了用户的安全,也可以减少服务器的链接数,减少服务器压力。
3 结束语
通过以上分析,可以看出ASP网站安全问题不但是一项复杂的系统工程,也是一直困扰开发设计者的难题。本文对ASP环境下存在的常见安全问题进行了分析总结,进而给出了相应的解决方法和对策。面对当前不断出现的新的网站安全问题,要构建一个面面俱到的安全体系是非常困难的,因此,ASP环境下的的安全应侧重于预防,从良好的编程习惯入手,全面的考虑分析系统的结构来构建一个相对较为安全稳定的动态网站。
参考文献:
[1] 成育东. ASP程序网站安全性编程探讨[J].山西科技,2006(5):36-40.
[2] 彭建,黄家林.基于ASP技术的Web网站安全措施分析[J].电脑与信息技术,2002(2):31-33.
[3] 杨书清.ASP+Access数据库安全存在的问题及对策[J].现代企业文化,2009(38):119-120.
[4] 孙悦. 基于ASP+Access的建站方案安全性研究[J].阴山学刊,2009(23):37-38
作者简介:
王宝华,
工作单位:山东临邑第一中学
通信地址:山东临邑第一中学 王宝华
邮编:251500
联系电话:13465157366
电子信箱:lyyzwbh@163.com