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

iis|安全|安全性|iis|安全|安全性

   随着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网上应用系统安全性的研究,我们对现有系统进行了改造,收到了较好的效果。

时间: 2024-10-29 06:00:09

用IIS+ASP建网站的安全性分析的相关文章

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

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

用DES加密数据库信息,增强Asp.net的安全性(1)--分析

asp.net|安全|安全性|加密|数据|数据库 在实际的数据库系统开发中,我们一般都是把数据库的连接字符串放在了Asp.net的配置文件Config.web中,连接字符串一般如下:  <appSettings>    <add key="ConnStr" value="server=192.168.2.36;database=Mdata;uid=sa;password=111000" />  </appSettings>    

Mssql和Mysql的安全性分析

mysql|安全|安全性 数据库是电子商务.金融以及ERP系统的基础,通常都保存着重要的商业伙伴和 客户信息.大多数企业.组织以及政府部门的电子数据都保存在各种数据库中,他们 用这些数据库保存一些个人资料,还掌握着敏感的金融数据.但是数据库通常没有象 操作系统和网络这样在安全性上受到重视.数据是企业,组织的命脉所在,因此选择 一款安全的数据库是至关重要的.大型网站一般使用oracle或DB2,而中小型网站大 多数使用更加灵活小巧的mssql数据库或者mysql数据库.那么,在同样的条件下,微 软

apache伪静态配置与iis伪静态配置的区别分析对比

apache伪静态配置与iis伪静态配置的区别分析对比 /* 在web开发中,经常会碰以要把php教程,asp教程文件伪静态成htm或其它文件,下面我们要讲一下关于apache伪静态规则与iis中伪静态规则的一些不同的部份了.下面我们先来看看apache伪静态的配置方法. 实例,我们要把 pl.php教程?id=1 page.php?id=1 伪静态成html页面 d-1.html v-1.html <virtualhost 192.168.0.110:801>     serveradmin

(转)基于微软平台IIS/ASP.NET开发的大型网站有哪些?

问题描述 首先说明一下,本文绝不是要说Microsoft平台多么好,多么牛.只是要提醒一些LAMP/JAVA平台下的同志们,微软平台不至于像你们说的,和想象的那么不堪!只是你们自己不知道而已.同时,也希望广大Microsoft同志们不要太妄自菲薄,有点信心!下面一一列举几个:http://www.msn.com/http://www.live.com/(包括skydrive.hotmail等)http://www.bing.com/根据comScore今年11月份的统计,.如果对这基于windo

iis asp出现Server Application Error错误解决方法

今天在用iis asp教程时突然出现server application error the server has encountered an error while loading an application during the processing of your request. please refer to the event log for more detail information. please contact the server administrator for

IIS ASP.NET 版本转换批处理代码_DOS/BAT

标识符的查看方法:iisaspnet.bat代码 复制代码 代码如下: @echo off echo ########################################## echo ######### IIS ASP.NET 版本转换 ########## echo ########################################## echo 说明: echo 站点标识符:打开IIS 管理器后点击"网站"在每个站点名称后都有一个唯一的站点标识符 ech

如何在不影响asp.net默认安全性的前提下使用ckeditor/fckeditor?

asp.net默认情况下,不允许提交包含html源代码的表单,这在很大程度上防止了跨站(提交)攻击,但是ckeditor/fckeditor之类的富文本编辑器肯定是要生成html源代码的,如何解决这个矛盾? 通常的办法是修改web.config asp.net2.0/3/3.5时可以这样做: <pages validateRequest="false"></pages> asp.net4.0下,这样还不够,必须写成这样: <pages validateRe

安全技术—RSA公钥密码体制安全性分析_漏洞研究

 引言   RSA密码系统是较早提出的一种公开钥密码系统.1978年,美国麻省理工学院(MIT)的Rivest,Shamir和Adleman在题为<获得数字签名和公开钥密码系统的方法>的论文中提出了基于数论的非对称(公开钥)密码体制,称为RSA密码体制.RSA是建立在"大整数的素因子分解是困难问题"基础上的,是一种分组密码体制.   介绍公钥密码体制(背景)   1.对称密码体制   对称密码体制是一种传统密码体制,也称为私钥密码体制.在对称加密系统中,加密和解密采