📄 asp作品保护方案.htm
字号:
<TD bgColor=#297dff width=1> </TD>
<TD width=753></TD>
<TD bgColor=#297dff width=1> </TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR vAlign=top>
<TD bgColor=#297dff width=1> </TD>
<TD width=753>
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD bgColor=#297dff colSpan=2 height=20><FONT color=#ceffff> →
<A href="http://www.aspsky.net/article/index.asp?classid=2"><FONT
color=#ceffff>ASP技术</FONT></A> >> <A
href="http://www.aspsky.net/article/index.asp?classid=2&Nclassid=5"><FONT
color=#ceffff>安全加密</FONT></A> >> 《asp作品保护方案》</FONT></TD></TR>
<TR>
<TD bgColor=#586011 colSpan=2 height=1><SPACER type="block"
width="1"></TD></TR>
<TR>
<TD colSpan=2 height=7></TD></TR>
<TR>
<TD align=middle class=p4
colSpan=2><B>asp作品保护方案</B></FONT><BR>2002-3-7 动网先锋 </TD></TR>
<TR>
<TD class=p4 colSpan=2>
<BLOCKQUOTE><BR>自从ASP(Active Server
Pages)问世以来,因其可以创建健壮易于维护、与平台无关的应用系统,ASP技术受到了越来越多网络程序员的喜爱,使用ASP从事WEB开发的人也越来越多。但ASP只是一种非编译型的、在服务端运行的脚本语言,采用明文(plain
text)方式来编写,即使采用了ASP加密程序对ASP源码进行加密,也不一定能保证发布到运行环境中去的ASP应用程序不被非法拷贝。对于高权限的管理员,可以轻而易举从服务器端拷贝出ASP程序应用到别的非授权网站。这样给ASP应用商业化带来了一定的困难。如何有效保护开发出来的ASP程序,本文基于磁盘序列号产生的随机性,结合微软官方免费提供的ASP脚本加密程序SCRENC.EXE,很好地解决了这个问题。
<BR>磁盘序列号,简称磁盘ID,是对磁盘进行格式化时随机产生的磁盘标识信息,是一个卷序列号。同一机器两次格式化随机产生固定格式的序列号相同几率几乎为零,
DOS的后期版本和WINDOWS、WINNT均采用了这种磁盘标识方式,因而磁盘序列号常被运用用于商业化软件进行加密使用。从WINDOWS9.X切换到MS-DOS方式,键入DIR命令后回车,屏幕出现当前卷标序列号信息,这个类似"0A48-1CD7"的序列号是一个16进制数。一些限期使用的软件,在使用期限到了之后,会要求使用者在线申请新的授权序列号(使用许可)。这种授权序列号相当一部分是采用了静态磁盘序列号结合时间产生的。安装完毕之后的软件,程序即使被非法拷贝到非初始安装环境中,也不能使用。
<P></P>
<P>上述思想用VC、VB及DELIPHI编程语言都容易实现,那么,在ASP中又如何实现呢?VBScript作为一种健壮的、安全的用户语言,是受客户机系统限制的,不能处理客户机上API的调用,也不能直接操纵客户机上的文件和文件系统之外的控件。因而本文采用VBScript并结合ASP内置组件FileSystem来实现上述思想。
以下程序根据具体情况略加修改,可以应用于实际的ASP应用系统。 </P>
<P>作为讲解实例,本文用到Access数据库安全机制,实际应用中,可以用其它格式的文件存放的数据。为便于阐述,我们先建一个Access数据库ID.mdb(密码为"kxj"),内建一个DriveInfo表,数据结构如下:
</P>
<P>id(自动编号) ;<BR>Serno(文本,12,磁盘序列号(10进制))
;<BR>Wrimark(数字,1,写盘标志,)。<BR></P>
<P>说明 </P>
<P>Wrimark 值为0代表合法用户未安装系统,值为1代表该系统已安装。当值为1且序列号与当前盘不符时,则判定为非法拷贝用户。
</P>
<P>初始化时先定义一个新记录,各字段初始值分别为1,12345678,0。 </P>
<P>在同一目录下,例如C:\INTERPUB\WWWROOT下,放置首页Default.asp,合法用户首页Success.asp,非法安装用户提示页Fail.htm及ID.mdb序列号存放库。
</P>
<P>各ASP文件的编写操作如下: </P>
<P>1、用FrontPage(或NotePad),新建一个ASP文件Default.asp,录入以下程序代码: </P>
<P><html><BR><head><BR><title>Sample</title><BR></head><BR><% dim
conn,fs,f<BR>Set conn =
Server.CreateObject("ADODB.Connection")<BR>conn.open
"driver={Microsoft Access Driver
(*.mdb)};uid=;pwd=kxj;dbq="&server.mappath("id.mdb")<BR>set
fs=server.createObject("scripting.filesystemobject")<BR>testDrive=Server.MapPath("/DRIVEINFO.ASP")<BR>'通过MapPath获得当前盘盘符<BR>testDrive=Left(testDrive,3)<BR>set
f=fs.getdrive(testDrive)<BR>'调用GetDrive方法,将驱动器赋予一个变量<BR>Mysql="SELECT
* From driveinfo where id=1" <BR>set rsCheck =
Server.CreateObject("ADODB.Recordset")<BR>rsCheck.open
Mysql,conn,1,1<BR>FSER=trim(f.serialnumber)<BR>'获得当前盘序列号<BR>StrSerno=trim(rsCheck.fields("SERNO"))<BR>StrMark=rsCheck.fields("WRIMARK")<BR>if
StrSerno<>FSER and StrMark=0
then<BR>'若是首次安装,则置写盘标志为1<BR>session("pass")=true<BR>'定义用户Session,并置为全局ASP文档标识变量<BR>set
rsMain = Server.CreateObject("ADODB.Recordset")<BR>Mysql1="update
driveinfo SET SERNO="&FSER&", WRIMARK=1" <BR>rsMain.open
Mysql1,conn,1,2<BR>response.write("<a href='success.asp'>SETUP
<BR>SUCCESSFUL!WELCOME TO ACCESS THE WEBSITE!</a>")<BR>set
rsMain=nothing<BR>else <BR>if StrSerno=FSER
then<BR>'若是合法用户再次合法进入<BR>session("pass")=true<BR>response.write("<a
href='success.asp'>YOU ARE AUTHORIZED BY THE WEBSITE
MANAGER,WELCOME TO ACCESS
!</a>")<BR>else<BR>'非法拷贝用户<BR>session("pass")=false<BR>response.write("<a
href='fail.htm'>IT IS ILLEGAL TO COPY THE WEBSITE'S ASP
DOCUMENT.YOU ARE NOT RIGRT TO USE THE PROGRAM.</a>")<BR>end
if<BR>end if <BR>response.write("<br>") <BR>response.write("Volume
Serial Number in drive
"&testDrive)<BR>response.write(f.serialnumber)<BR>response.write("<br>")<BR>response.write("Volume
hex Serial Number in drive
"&testDrive)<BR>response.write(hex(f.serialnumber))<BR>response.write("<br>")<BR>'作为演示,本程序把当前盘序列号列出来(16进制)<BR>set
f=nothing<BR>set fs=nothing<BR>%><BR></html><BR></P>
<P>2、在合法用户可以访问的各个ASP文件头部,添加如下代码: </P>
<P><% if Session("pass")=false
then<BR>'对Session变量进行判定,非法则跳出本ASP文件<BR>response.redirect("fail.htm")<BR>end
if <BR>%><BR></P>
<P>3、用ASP加密程序(例如微软公司的SCRENC.EXE,别的ASP加密程序也可以)对各个ASP文件进行加密。 </P>
<P>在DOS状态下运行SCRENC -l vbscript source.asp
destination.asp,即把源文件source.asp生成了包含密文ASP脚本的新文件destination.asp。SCRENC.EXE可以在微软公司站点(http://www.microsoft.com免费下载)。
<BR>以上程序代码在简体中文NT4.0、IIS3.0及简体中文PWIN9.8、PWS4.0下通过。
<BR><BR></P></BLOCKQUOTE></TD></TR>
<TR>
<TD class=p4 vAlign=top width="50%">
<BLOCKQUOTE>原作者:sonic_qd(转)<BR>来 源:开发者俱乐部<BR>共有7965位读者阅读过此文<BR>【<A
href="http://bbs.aspsky.net/list.asp?boardid=1">发表评论</A>】
</BLOCKQUOTE></TD>
<TD class=p4 vAlign=top width="50%">
<P>
<LI><FONT color=#0772b1>上篇文章</FONT>:<A
href="http://www.aspsky.net/article/list.asp?id=2640">INSERT语法使用技巧一例</A>
<BR>
<LI><FONT color=#0772b1>下篇文章</FONT>:<A
href="http://www.aspsky.net/article/list.asp?id=2642">用ASP和SQL实现基于Web的事件日历</A>
</LI></TD></TR>
<TR>
<TD bgColor=#297dff class=p4 height=20 width="50%"><FONT
color=#ceffff> → 本周热门</FONT></TD>
<TD bgColor=#297dff class=p4 width="50%"><FONT color=#ceffff> →
相关文章</FONT></TD></TR>
<TR>
<TD bgColor=#586011 colSpan=2 height=1><SPACER type="block"
width="1"></TD></TR>
<TR>
<TD colSpan=2 height=7></TD></TR>
<TR>
<TD class=p4 vAlign=top width="50%">
<LI><A href="http://www.aspsky.net/article/list.asp?id=1510"
target=_top title="SQL Server 7.0 入门(一)">SQL Server 7.0
入门(...</A>[<FONT color=red>7239</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1540"
target=_top title=PHP4实际应用经验篇(1)>PHP4实际应用经验篇(1)</A>[<FONT
color=red>7135</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1536"
target=_top
title=无组件文件上传代码实例(支持多文件上传及文件和input域混合上传)>无组件文件上传代码实例(支持多文件上...</A>[<FONT
color=red>6029</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=2557"
target=_top title=树型结构在ASP中的简单解决>树型结构在ASP中的简单解决</A>[<FONT
color=red>5757</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1545"
target=_top title=PHP4实际应用经验篇(6)>PHP4实际应用经验篇(6)</A>[<FONT
color=red>5599</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=2563"
target=_top title=一个老个写的无组件上传>一个老个写的无组件上传</A>[<FONT
color=red>5013</FONT>]<BR>
<LI><A href="http://www.aspsky.net/article/list.asp?id=1542"
target=_top title=PHP4实际应用经验篇(3)>PHP4实际应用经验篇(3)</A>[<FONT
color=red>4731</FONT>]<BR></LI></TD>
<TD class=p4 vAlign=top width="50%">
<LI><A
href="http://www.aspsky.net/article/list.asp?id=2641">asp作品保护方案</A><BR></LI></TD></TR>
<TR>
<TD colSpan=2 height=7></TD></TR></TBODY></TABLE>
<TD bgColor=#297dff width=1> </TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD bgColor=#297dff height=1><SPACER type="block"
width="1"></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle height=30></TD></TR></TBODY></TABLE>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle class=p2 width="100%">
<TABLE border=0 cellPadding=0 cellSpacing=0 width=755>
<TBODY>
<TR>
<TD align=middle class=p2 width="100%">
<P align=center><A
href="http://www.aspsky.net/produce/index.asp">客户服务</A> -- <A
href="http://www.aspsky.net/aspads.asp">广告合作</A> -- <A
href="http://www.aspsky.net/about.asp">关于本站</A> -- <A
href="http://www.aspsky.net/tell.asp">联系方法</A><BR><BR>动网先锋版权所有 <FONT
face=Verdana, size=1 Arial, Helvetica, sans-serif>Copyright ©
2000-2001 <B>AspSky<FONT color=#cc0000>.Net</FONT></B>, All Rights
Reserved .</FONT>
</P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></CENTER></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -