求教ASP高手:如果要将系统出卖,ASP中如何加密源代码???

tcyun 2001-08-01 10:57:54
...全文
128 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zken 2001-08-02
  • 打赏
  • 举报
回复
试试微软的官方加密吧,其实那有那么多人看着你的程序呀,把程序做好才是真的,在加密上没必要华太多时间。
tripofdream 2001-08-01
  • 打赏
  • 举报
回复
可以去找asp2dll这个软件
tcyun 2001-08-01
  • 打赏
  • 举报
回复
是啊!请patient_carlos推荐一些工具 谢谢!
patient_carlos 2001-08-01
  • 打赏
  • 举报
回复
微软有专用工具
muwenyi 2001-08-01
  • 打赏
  • 举报
回复
怎样用COM封装呢?可以推荐一些这个方面比较好的书吗?
muwenyi 2001-08-01
  • 打赏
  • 举报
回复
agree
yousoft2013 2001-08-01
  • 打赏
  • 举报
回复
script encode加密一点都没用,同意用组件!!
bao790727 2001-08-01
  • 打赏
  • 举报
回复
用组件封装,再注册组件,至少组件内的代码看不见
tripofdream 2001-08-01
  • 打赏
  • 举报
回复
script encode并不可靠,COM封装比较好一点
Suddy 2001-08-01
  • 打赏
  • 举报
回复
本质上没有加密,你也是没有办法呀
zxwcq 2001-08-01
  • 打赏
  • 举报
回复
保护 ASP脚本源代码通常可采用 3种方式:第一种方式是对访问用户进行限制,禁止非法用户访问;第二种方式是对 Server端环境进行处理,提高系统的健壮性;第三种方式是对源代码进行加工,隐藏或部分隐藏脚本源代码。这 3种方式互为补充,有效设置可以提高脚本源代码的安全性。下面简单介绍这 3种方式的实现方法。

限制访问用户

所谓限制访问用户是指只有授权的用户才能访问系统的 ASP脚本。这主要有两种实现方法:第一种方法是通过 SSL( Secure Socket Layer)方法, Server端向 Client端发放证书(可以利用免费证书管理软件), Client端将证书添加到浏览器中,只有拥有合法证书的用户才能与 Server端建立链接,从而访问系统。这种方法不需要编程,安全性较高,但证书的下发比较麻烦。另一种方法是通过常用的验证用户名、口令方法,用户登录时必须首先输入用户名和口令,只有合法的用户名和口令才能访问系统。这种方法安全性稍低,编程比较简单。而且在实现时需要注意:不能简单地在登录窗口进行判别,因为如果用户知道了登录窗口下一步链接的文件名,可以直接在地址栏输入该文件名而绕过登录窗口。编程时可以在除登录窗口文件外的每个文件的开头检查 Request(“ HTTP_REFERENCE“)项的 IP地址,看其是否是由系统内部的文件跳转而来,如不是则跳转到登录窗口。代码如下:

<%

dim iValid

iValid=instr(Request(“ HTTP_REFERENCE“),

“ http://131.252.88.71“)

if iValid= 0 then

Response.Redirect“ login.asp“

end if

......

% >

对 Server端进行处理

对 Server端进行处理主要有 3种方法:

●对系统权限进行设置

对 Server端设置详细的安全权限,除了系统管理员,尽量降低用户的存取权限;删除不必要的共享,包括打印机的共享;关闭匿名服务等一些不必要的功能;对 ASP源代码的目录设置详尽的访问权限,关闭“读”权限。

●经常下载安全补丁

一些恶意者经常利用系统的安全缺陷得到 ASP脚本的源代码。例如,利用 ::$ DATA可以得到 ASP脚本的源代码,或利用 Windows NT的一些安全缺陷可以登录到系统,查看系统的目录和文件,所以需要经常下载并安装微软公司提供的安全补丁。

●尽量不要在系统中下载、安装不必要的软件

一些下载软件带有“后门”,会将脚本源代码泄露。例如,微软有一个专门查看 ASP脚本源代码的程序 code.asp,如果把它放到 Web服务器上,别人可以很容易地查看 ASP脚本源代码(网上有不少类似免费软件)。

处理 ASP脚本源代码

对 ASP脚本源代码进行处理主要有两种方法:

●对 ASP脚本源代码进行加密

利用微软的 Windows Script Encoder,可以对 ASP脚本源代码进行加密。不过客户端加密后,只有 IE 5才能执行;服务器端脚本加密后,只有服务器上安装有 Script Engine 5才能执行。

Windows Script Encoder是一个简单的命令行加密工具,可以利用它加密 ASP脚本的源代码。加密后,无论 Server端和 Client端都无法读懂加密后的信息,如果改动加密后的信息,脚本就无法正常运行,从而有效地保护了 ASP脚本源代码。

例如 ASP文件 Test.asp中有如下一条语句:


<%

Response.Write“ 123456”

% >


在 DOS方式下运行加密命令 : screnc c:\backiis\test.asp c:\backiis\testenc.asp

在 testenc.asp中保存加密后代码,代码如下:


<%# @~ ^IQAAAA==7@# @& 7“+ kwW/? ? MkO+ ,Jq+ 2c*+ E@# @& YQcAAA==^#~ @% >


将 test.asp文件保存到另外一台机器上, Client端可以正常访问 testenc.asp(访问是透明的,就像访问 test.asp一样 ),但无论 Server端和 Client端都无法查看 test.asp脚本源代码。

●将 ASP中的关键功能制作成动态链接库,部分隐藏 ASP脚本源代码

在 VB 6.0中建立一个 ActiveX dll工程(设置工程名: Example,类名: GerRec)。在菜单中选择“工程”,然后选择引用“ Microsoft Active Server Pages Object Library”和“ Microsoft ActiveX Data Object 2.0 Library”。输入如下代码:

Private MyScriptingContext As ScriptingContext

Private MyApplication As Application

Private MyRequest As Request

Private MyResponse As Response

Private MyServer As Server

Private MySession As Session

Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)

Set MyScriptingContext = PassedScriptingContext

Set MyApplication = MyScriptingContext.Application

Set MyRequest = MyScriptingContext.Request

Set MyResponse = MyScriptingContext.Response

Set MyServer = MyScriptingContext.Server

Set MySession = MyScriptingContext.Session

End Sub

Public Sub OnEndPage()

Set MyScriptingContext = Nothing

Set MyApplication = Nothing

Set MyRequest = Nothing

Set MyResponse = Nothing

Set MyServer = Nothing

Set MySession = Nothing

End Sub

Public Sub SayTitle(strTitle as string)

MyResponse.Write strTitle

......

End Sub

Public Function GetRecSqlOleDb(strSql As String) As Recordset

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

Dim myCnn As Connection

Dim mySet As Recordset

Dim strConnstring As String

Set myCnn = New ADODB.Connection

Set mySet = New ADODB.Recordset

strConnstring=“ Provider=SQLOLEDB.1;Password=1234567;”&“ Persist Security Info=True;User ID=sa;”&“ Initial Catalog=vlog;”&“ Data Source=hplh3;Connect Timeout=15”

myCnn.ConnectionString = strConnstring

myCnn.Open

mySet.ActiveConnection = myCnn

mySet.Open strSql

Set GetRecSqlOleDb = mySet

End Function

编译生成 Example.dll,然后在 InterDev中插入如下代码:

<%

dim MyRec

Set ObjReference=Server.CreateObject

(“ Example.GerRec” )

set MyRec=Server.CreateObject(“ ADODB.Recordset” )

Set MyRec=objReference.GetRecSqlOleDb(“ select* from catalog” )

Response.Write MyRec.fields(0)

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

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧