您的位置:首页资讯网络应用 → 用IIS+ASP建网站的安全性分析

用IIS+ASP建网站的安全性分析

时间:2004/10/8 16:35:00来源:本站整理作者:蓝点我要评论(1)

     随着Internet的发展,Web技术日新月异,人们已经不再满足于静态HTML技术,更多的是要求动态、交互的网络技术。继通用网关接口(CGI)之后,微软推出的IIS+ASP的解决方案作为一种典型的服务器端网页设计技术,被广泛应用在网上银行、电子商务、网上调查、网上查询、BBS、搜索引擎等各种互联网应用中。与此同时,Access数据库作为微软推出的以标准JET为引擎的桌面型数据库系统,由于具有操作简单、界面友好等特点,具有较大的用户群体。目前,IIS+ASP+Access是中小型Internet网站的首选方案。但是,该解决方案在为我们带来便捷的同时,也带来了严峻的安全问题。

一、安全隐患分析


  IIS+ASP+Access解决方案的主要安全隐患来自Access数据库的安全性,其次在于ASP网页设计过程中的安全意识和措施。
1.数据库可能被下载
  在IIS+ASP+Access网站中,如果有人通过各种方法获得或者猜到数据库的存储路径和文件名,则该数据库就可以被下载到本地。例如:对于网上书店数据库,一般命名为book.mdb、store.mdb等,存储路径一般为“URL/database”或放在根目录“URL/”下,这样,任何人敲入地址:“URL/database/store.mdb”, 数据库就可以被下载了。
2.数据库可能被解密
  由于Access数据库的加密机制比较简单,即使设置了密码,解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥(例如: Access 97为86 FB EC 37 5D 44 9C FA C6 5E 28 E6 13)进行“异或”来形成一个加密串,并将其存储在*.mdb文件从地址“&H42”开始的区域内。我们可以轻松地编制解密程序,一个几十行的小程序就可以轻松地获得任何Access数据库的密码。因此,只要数据库被下载,其信息就没有任何安全性可言了。
3.ASP页面的安全性
  (1)源代码安全性隐患。由于ASP程序采用非编译性语言,大大降低了程序源代码的安全性。如果黑客侵入站点,就可以获得ASP源代码;同时对于租用服务器的用户,因个别服务器出租商的职业道德问题,也会造成ASP应用程序源代码泄露。
  (2)程序设计中容易被忽视的安全性问题。ASP代码使用表单实现交互,而相应的内容会反映在浏览器的地址栏中,如果不采用适当的安全措施,只要记下这些内容,就可以绕过验证直接进入某一页面。例如在浏览器中敲入“...page.asp?x=1”,即可不经过表单页面直接进入满足“x=1”条件的页面。因此,在验证或注册页面中,必须采取特殊措施来避免此类问题的产生。


二、提高IIS+ASP网站安全性的方法
  


  1.防止数据库被下载
由于Access数据库加密机制过于简单,有效地防止数据库被下载,就成了提高ASP+Access解决方案安全性的重中之重。以下两种方法简单、有效。
  (1)非常规命名法。为Access数据库文件起一个复杂的非常规名字,并把它放在几个目录下。例如,对于网上书店的数据库,我们不把它命名为“book.mdb”或“Store.mdb”,而是起个非常规的名字,例如:faq9jl.mdb,再把它放在如./akkt/kj61/acd/av5 的几层目录下,这样黑客想通过猜的方式得到Access数据库文件名就很难了。
  (2)使用ODBC数据源。在ASP程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同失密,例如:
DBPath = Server.MapPath(“./akkt/kj61/acd/av5/faq9jl.mdb ”) 
conn.open “driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath 
可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了:
conn.open “ODBC-DSN名” 
2.对ASP页面进行加密
  为有效地防止ASP源代码泄露,可以对ASP页面进行加密。我们曾采用两种方法对ASP页面进行加密。一是使用组件技术将编程逻辑封装入DLL之中;二是使用微软的Script Encoder对ASP页面进行加密。使用组件技术存在的主要问题是每段代码均需组件化,操作比较繁琐,工作量较大,而使用Encoder对ASP页面进行加密,操作简单、收效良好。Script Encoder的运行程序是SCRENC.EXE,使用方法是:
SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile
其中:/s 是屏蔽屏幕输出;/f 指定输出文件是否覆盖同名输入文件;/xl 指是否在.asp文件的顶部添加@Language指令;/l defLanguag指定缺省的脚本语言; /e defExtension 指定待加密文件的扩展名。
3.注册验证
  为防止未经注册的用户绕过注册界面直接进入应用系统,我们采用Session对象进行注册验证。例如,我们制作了下面的注册页面。
设计要求注册成功后系统启动hrmis.asp?page=1页面。假设,不采用Session对象进行注册验证,则用户在浏览器中敲入“URL/hrmis.asp?page=1”即可绕过注册界面,直接进入系统。
在此,利用Session对象进行注册验证:
<%
’读取使用者所输入的账号和密码
UserID = Request(“UserID”)
Password = Request(“Password”)
’检查UserID 及Password 是否正确
If UserID <>“hrmis” Or Password <>“password” Then
Response.Write “账号错误!”
Response.End
End If
’将Session 对象设置为通过验证状态
Session(“Passed”) = True
%>
进入应用程序后,首先进行验证:
<%
’如果未通过验证,返回Login状态
If Not Session(“Passed”) Then
Response.Redirect “Login.asp”
End If
%>
通过对IIS+ASP+Access网上应用系统安全性的研究,我们对现有系统进行了改造,收到了较好的效果。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360免费wifi电脑版怎么有道云笔记怎么保存网有道云笔记内容丢失怎360免费wifi一直显示正

最新文章 微博热搜宝盒是什么 微最新微信编辑器哪个好 百度网盘安全吗?百度网盘信息泄露怎么回事乐视云盘关闭怎么办 乐视云盘关闭怎么转移文百度云盘下载速度慢解决方法2017 百度云盘下百度网盘怎么用迅雷下载2017 百度网盘怎么用

人气排行 无线网络密码破解WPA/WPA2教程(包教包会)微信编辑器哪个好 3种实用微信编辑器推荐foxmail邮件存储位置在哪 foxmail7.2邮件存p2p种子搜索器用不了解决办法360免费wifi没有无线网卡怎么办百度云网盘中怎么添加好友 百度云网盘添加微信电脑版聊天记录保存在哪 微信电脑版文件360云盘上传速度慢怎么办 360云盘上传速度慢