灵魂腐蚀 发表于 2015-1-16 23:14:46

ASP网站制作之asp作品回护计划

对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了,自从ASP(ActiveServerPages)问世以来,因其能够创立强健易于保护、与平台有关的使用体系,ASP手艺遭到了愈来愈多收集程序员的喜好,利用ASP处置WEB开辟的人也愈来愈多。但ASP只是一种非编译型的、在服务端运转的剧本言语,接纳明文(plaintext)体例来编写,即便接纳了ASP加密程序对ASP源码举行加密,也纷歧定能包管公布到运转情况中往的ASP使用程序不被不法拷贝。关于高权限的办理员,能够十拿九稳从服务器端拷贝出ASP程序使用到其余非受权网站。如许给ASP使用贸易化带来了必定的坚苦。怎样无效回护开辟出来的ASP程序,本文基于磁盘序列号发生的随机性,分离微软官方收费供应的ASP剧本加密程序SCRENC.EXE,很好地办理了这个成绩。
磁盘序列号,简称磁盘ID,是对磁盘举行格局化时随机发生的磁盘标识信息,是一个卷序列号。统一呆板两次格局化随机发生流动格局的序列号不异概率几近为零,DOS的前期版本和WINDOWS、WINNT均接纳了这类磁盘标识体例,因此磁盘序列号常被使用用于贸易化软件举行加密利用。从WINDOWS9.X切换到MS-DOS体例,键进DIR命令后回车,屏幕呈现以后卷标序列号信息,这个相似"0A48-1CD7"的序列号是一个16进制数。一些期限利用的软件,在利用刻日到了以后,会请求利用者在线请求新的受权序列号(利用允许)。这类受权序列号相称一部分是接纳了静态磁盘序列号分离工夫发生的。安装终了以后的软件,程序即便被不法拷贝到非初始安装情况中,也不克不及利用。

上述头脑用VC、VB及DELIPHI编程言语都简单完成,那末,在ASP中又怎样完成呢?VBScript作为一种强健的、平安的用户言语,是受客户机体系限定的,不克不及处置客户机上API的挪用,也不克不及间接利用客户机上的文件和文件体系以外的控件。因此本文彩用VBScript并分离ASP内置组件FileSystem来完成上述头脑。以下程序依据详细情形略加修正,能够使用于实践的ASP使用体系。

作为解说实例,本文用到Access数据库平安机制,实践使用中,能够用别的格局的文件寄存的数据。为便于论述,我们先建一个Access数据库ID.mdb(暗码为"kxj"),内建一个DriveInfo表,数据布局以下:

id(主动编号);
Serno(文本,12,磁盘序列号(10进制));
Wrimark(数字,1,写盘标记,)。


申明

Wrimark值为0代表正当用户未安装体系,值为1代表该体系已安装。当值为1且序列号与以后盘不符时,则判断为不法拷贝用户。

初始化时先界说一个新纪录,各字段初始值分离为1,12345678,0。

在统一目次下,比方C:INTERPUBWWWROOT下,安排首页Default.asp,正当用户首页Success.asp,不法安装用户提醒页Fail.htm及ID.mdb序列号寄存库。

各ASP文件的编写操纵以下:

1、用FrontPage(或NotePad),新建一个ASP文件Default.asp,录进以下程序代码:

<html>
<head>
<title>Sample</title>
</head>
<%dimconn,fs,f
Setconn=Server.CreateObject("ADODB.Connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};uid=;pwd=kxj;dbq="&server.mappath("id.mdb")
setfs=server.createObject("scripting.filesystemobject")
testDrive=Server.MapPath("/DRIVEINFO.ASP")
经由过程MapPath取得以后盘盘符
testDrive=Left(testDrive,3)
setf=fs.getdrive(testDrive)
挪用GetDrive办法,将驱动器付与一个变量
Mysql="SELECT*Fromdriveinfowhereid=1"
setrsCheck=Server.CreateObject("ADODB.Recordset")
rsCheck.openMysql,conn,1,1
FSER=trim(f.serialnumber)
取得以后盘序列号
StrSerno=trim(rsCheck.fields("SERNO"))
StrMark=rsCheck.fields("WRIMARK")
ifStrSerno<>FSERandStrMark=0then
如果初次安装,则置写盘标记为1
session("pass")=true
界说用户Session,并置为全局ASP文档标识变量
setrsMain=Server.CreateObject("ADODB.Recordset")
Mysql1="updatedriveinfoSETSERNO="&FSER&",WRIMARK=1"
rsMain.openMysql1,conn,1,2
response.write("<ahref=success.asp>SETUP
SUCCESSFUL!WELCOMETOACCESSTHEWEBSITE!</a>")
setrsMain=nothing
else
ifStrSerno=FSERthen
如果正当用户再次正当进进
session("pass")=true
response.write("<ahref=success.asp>YOUAREAUTHORIZEDBYTHEWEBSITEMANAGER,WELCOMETOACCESS!</a>")
else
不法拷贝用户
session("pass")=false
response.write("<ahref=fail.htm>ITISILLEGALTOCOPYTHEWEBSITESASPDOCUMENT.YOUARENOTRIGRTTOUSETHEPROGRAM.</a>")
endif
endif
response.write("<br>")
response.write("VolumeSerialNumberindrive"&testDrive)
response.write(f.serialnumber)
response.write("<br>")
response.write("VolumehexSerialNumberindrive"&testDrive)
response.write(hex(f.serialnumber))
response.write("<br>")
作为演示,本程序把以后盘序列号列出来(16进制)
setf=nothing
setfs=nothing
%>
</html>


2、在正当用户能够会见的各个ASP文件头部,增加以下代码:

<%ifSession("pass")=falsethen
对Session变量举行判断,不法则跳出本ASP文件
response.redirect("fail.htm")
endif
%>


3、用ASP加密程序(比方微软公司的SCRENC.EXE,其余ASP加密程序也能够)对各个ASP文件举行加密。

在DOS形态下运转SCRENC-lvbscriptsource.aspdestination.asp,即把源文件source.asp天生了包括密文ASP剧本的新文件destination.asp。SCRENC.EXE能够在微软公司站点(http://www.microsoft.com收费下载)。
以上程序代码在简体中文NT4.0、IIS3.0及简体中文PWIN9.8、PWS4.0下经由过程。

</p>asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。

深爱那片海 发表于 2015-1-20 08:37:52

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

谁可相欹 发表于 2015-1-21 07:21:44

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。

不帅 发表于 2015-1-29 13:26:26

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

兰色精灵 发表于 2015-2-6 01:29:01

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

精灵巫婆 发表于 2015-2-14 20:10:47

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。

再见西城 发表于 2015-3-4 10:07:11

掌握asp的特性而且一定要知道为什么。

冷月葬花魂 发表于 2015-3-11 18:13:28

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

飘灵儿 发表于 2015-3-19 06:29:17

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

飘飘悠悠 发表于 2015-3-27 10:11:07

Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
页: [1]
查看完整版本: ASP网站制作之asp作品回护计划