加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

如何保护ASP脚本源代码

发布时间:2022-10-15 06:31:59 所属栏目:Asp教程 来源:网络
导读: 正 文:
ASP是基于Server端的脚本运行环境,它简单易用,不需要编译和连接,脚本可以在Server端直接运行,并且它支持多用户、多线程,在Web开发中得到了广泛的应用。但是,因为ASP脚本是纯

正 文:

ASP是基于Server端的脚本运行环境,它简单易用,不需要编译和连接,脚本可以在Server端直接运行,并且它支持多用户、多线程,在Web开发中得到了广泛的应用。但是,因为ASP脚本是纯文本格式,所以恶意者通过源代码可以很容易地看到原本不该看到的页面内容。例如,ASP源代码中通常有系统数据库的连接用户名和口令,恶意者利用此用户名和口令可以轻松地查看数据库中的所有信息(包括系统机密信息),还可能篡改库中信息,造成系统严重损坏。因此,保护ASP脚本的源代码显得非常重要。保护ASP脚本源代码通常可采用3种方式:第一种方式是对访问用户进行限制,禁止非法用户访问;第二种方式是对Server端环境进行处理,提高系统的健壮性;第三种方式是对源代码进行加工,隐藏或部分隐藏脚本源代码。这3种方式互为补充,有效设置可以提高脚本源代码的安全性。下面简单介绍这3种方式的实现方法。限制访问用户所谓限制访问用户是指只有授权的用户才能访问系统的ASP脚本。这主要有两种实现方法:第一种方法是通过SSL(SecureSocketLayer)方法,Server端向Client端发放证书(可以利用免费证书管理软件)asp源代码,Client端将证书添加到浏览器中,只有拥有合法证书的用户才能与Server端建立链接,从而访问系统。

这种方法不需要编程,安全性较高,但证书的下发比较麻烦。另一种方法是通过常用的验证用户名、口令方法,用户登录时必须首先输入用户名和口令,只有合法的用户名和口令才能访问系统。这种方法安全性稍低,编程比较简单。而且在实现时需要注意:不能简单地在登录窗口进行判别,因为如果用户知道了登录窗口下一步链接的文件名,可以直接在地址栏输入该文件名而绕过登录窗口。编程时可以在除登录窗口文件外的每个文件的开头检查Request(“HTTP_REFERENCE“)项的IP地址,看其是否是由系统内部的文件跳转而来,如不是则跳转到登录窗口。代码如下:对Server端进行处理对Server端进行处理主要有3种方法:●对系统权限进行设置对Server端设置详细的安全权限,除了系统管理员,尽量降低用户的存取权限;删除不必要的共享,包括打印机的共享;关闭匿名服务等一些不必要的功能;对ASP源代码的目录设置详尽的访问权限,关闭“读”权限。●经常下载安全补丁一些恶意者经常利用系统的安全缺陷得到ASP脚本的源代码。例如,利用::$DATA可以得到ASP脚本的源代码,或利用WindowsNT的一些安全缺陷可以登录到系统,查看系统的目录和文件,所以需要经常下载并安装微软公司提供的安全补丁。

●尽量不要在系统中下载、安装不必要的软件一些下载软件带有“后门”,会将脚本源代码泄露。例如,微软有一个专门查看ASP脚本源代码的程序code.asp,如果把它放到Web服务器上,别人可以很容易地查看ASP脚本源代码(网上有不少类似免费软件)。处理ASP脚本源代码对ASP脚本源代码进行处理主要有两种方法:●对ASP脚本源代码进行加密利用微软的WindowsScriptEncoder,可以对ASP脚本源代码进行加密。不过客户端加密后,只有IE5才能执行;服务器端脚本加密后,只有服务器上安装有ScriptEngine5才能执行。WindowsScriptEncoder是一个简单的命令行加密工具,可以利用它加密ASP脚本的源代码。加密后,无论Server端和Client端都无法读懂加密后的信息,如果改动加密后的信息,脚本就无法正常运行,从而有效地保护了ASP脚本源代码。例如ASP文件Test.asp中有如下一条语句:在DOS方式下运行加密命令:screncc:\backiis\test.aspc:\backiis\testenc.asp在testenc.asp中保存加密后代码,代码如下:将test.asp文件保存到另外一台机器上,Client端可以正常访问testenc.asp(访问是透明的,就像访问test.asp一样),但无论Server端和Client端都无法查看test.asp脚本源代码。

●将ASP中的关键功能制作成动态链接库,部分隐藏ASP脚本源代码在VB6.0中建立一个ActiveXdll工程(设置工程名:Example,类名:GerRec)。在菜单中选择“工程”,然后选择引用“MicrosoftActiveServerPagesObjectLibrary”和“MicrosoftActiveXDataObject2.0Library”。输入如下代码:PrivateMyScriptingContextAsScriptingContext

PrivateMyApplicationAsApplication

PrivateMyRequestAsRequest

PrivateMyResponseAsResponse

PrivateMyServerAsServer

PrivateMySessionAsSession

PublicSubOnStartPage(PassedScriptingContextAsScriptingContext)

SetMyScriptingContext=PassedScriptingContext

SetMyApplication=MyScriptingContext.Application

SetMyRequest=MyScriptingContext.Request

SetMyResponse=MyScriptingContext.Response

SetMyServer=MyScriptingContext.Server

SetMySession=MyScriptingContext.Session

EndSub

PublicSubOnEndPage()

SetMyScriptingContext=Nothing

SetMyApplication=Nothing

SetMyRequest=Nothing

SetMyResponse=Nothing

SetMyServer=Nothing

SetMySession=Nothing

EndSub

PublicSubSayTitle(strTitleasstring)

MyResponse.WritestrTitle

......

EndSub

PublicFunctionGetRecSqlOleDb(strSqlAsString)AsRecordset

’利用OLEDB打开一个SQL7.0数据库,返回数据记录

DimmyCnnAsConnection

DimmySetAsRecordset

DimstrConnstringAsString

SetmyCnn=NewADODB.Connection

SetmySet=NewADODB.Recordset

strConnstring=“Provider=SQLOLEDB.1;Password=1234567;”&“PersistSecurityInfo=True;UserID=sa;”&“InitialCatalog=vlog;”&“DataSource=hplh3;ConnectTimeout=15”

myCnn.ConnectionString=strConnstring

myCnn.Open

mySet.ActiveConnection=myCnn

mySet.OpenstrSql

SetGetRecSqlOleDb=mySet

EndFunction编译生成Example.dll,然后在InterDev中插入如下代码:在Client端访问这个ASP文件将显示第一条记录的第一个字段内容。该例子通过动态链接库将对数据库的访问隐藏起来,即使有人得到了ASP源代码,他也不可能通过ASP源代码得到数据库的用户名和口令,从理论上讲,所有的ASP源代码都可以用dll来实现。

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!