随着互联网的普及,许多珍贵文档和最新技术资料相继上网,方面了广大网民上网学习和工作,但与此同时,保护网上作品变得更加重要。网站内容提供者都希望通过使用一种简单的技术,保护自己的源代码(包括网页内容和脚本)。本文介绍了几种常用的“网页加密技术”,由浅入深的探讨了相关问题。
一、最简单的页面内容保护方法:
禁止复制过程中的“鼠标拖动”,关闭“全选”功能。只需要在网页<body>中标记中加入<body onselectstart="return false;" oncontextmenu="return false;" ondragstart="return false;">控制语句,就能让访客无法选定网页内容进行复制。即使从IE浏览器“编辑”菜单下选取“全选”或用热键“Ctrl+A”都没用。
补充:由于在IE5.0中,可以通过先按住“Ctrl”键,再拖动鼠标的方法选定文字,从而逃避上述控制语句的检测,为了补住漏洞,还需要在上述控制语句的基础上,加入屏蔽键盘输入功能,具体方法是:
在</head>标记前加入一段Javascript屏蔽键盘输入的语句(函数):
<SCRIPT language=javascript>
<!--
function keydownevent()
{
alert("请不要使用键盘操作!");
return false;
}
//-->
</SCRIPT>
最后在网页<body>中标记中加入<body onkeydown='return keydownevent()' onselectstart="return false;" oncontextmenu="return false;" ondragstart="return false;">控制语句。
二、脚本简单编码:
在第一种方法中,有个缺陷,访客可通过查看IE浏览器菜单中的“源文件”等其它办法获取网页源代码,再加工处理后,使网页控制语句失效,又可以直接拷贝了。为了防止控制语句被轻易删除,有必要对网页源代码进行编码处理,下面的网页提供了将HTML语句编码的功能:
<html>
<head>
<title>源代码编码脚本</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<SCRIPT language=javascript>
<!--
var Words;
function SetWords(word)
{
Words = escape(word.value);
}
function SetNewWords(form)
{
var NewWords;
NewWords = Words
form.NewWords.value = NewWords;
}
//-->
</SCRIPT>
</head>
<body bgcolor="#fef4d9">
<center><font color=red >源代码编码脚本</font></center>
<center>
<FORM METHOD="POST">
<p>将你的页面源代码粘贴在下面的框内,要包括所有的标签例如html , head, body等。</p>
<P align="center">
<TEXTAREA NAME="Word" VALUE="" ROWS=7 COLS=50 ONCHANGE="SetWords(this)"></TEXTAREA>
<P align="center"> <INPUT TYPE=BUTTON ONCLICK="SetNewWords(this.form)" VALUE="开始转换">
<P align="center">
<TEXTAREA NAME="NewWords" VALUE="" ROWS=7 COLS=50></TEXTAREA>
</FORM><p align="center"> 以上是转换好的代码
</center>
</body>
</html>
最后,将转换好的代码加入如下脚本的引号""区内,就是加密后的HTML了!
<HTML>
<HEAD>
<SCRIPT LANGUAGE="Javascript">
<!--
var Words =" " //将转换好的代码加入如下脚本的引号""区内
function SetNewWords()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
SetNewWords();
// -->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
脚本经编码后,一般的上网用户即使打开了该网页的源代码,看到的也都只是些“%20%0D%0A%3Chtml%3E%0D%0A%3C%21”机器代码(非 ASCII 字符都用 xx 编码代替,其中 xx 等于表示该字符的十六进制数),如果不是网络专家,一般无法解密。
三、脚本高级编码加密:
如果网络专家遇到刚才介绍的第二种脚本编码方法,只需要使用反编码语句unescape就可破译出源文件,从而失去了保护功能。为了更好的保护源代码,可以在第二种脚本编码方法的基础上,使用微软提供的免费脚本编码器(Script Encoder)来加密页面中嵌入的脚本代码。
Script Encoder是Microsoft出品的一个script加密工具,它是一个简单的命令行工具,可以对html文件进行加密,加密后其中的文本部分均保持不变,只是对其中的javascript 和VBscript部分进行加密处理,加密后的script在功能上无任何损失,仅是其代码变成密文,用源文件方式查看只是一些乱码。该程序很小只有64K,使用非常很简单,在DOS命令行下执行,也可在windows下带参数运行。该程序除了可对html文件加密外,也可以对asa, asp, cdx,js, sct,vbs文件加密。加密后的文件大小基本无变化。加密后的javascript中原< SCRIPT LANGUAGE="JScript">行,变成< SCRIPT LANGUAGE="JScript.Encode" >,VBscript 中< SCRIPTLANGUAGE="VBScript.Encode">变成< SCRIPT LANGUAGE="VBScript" >
可到微软网站免费下载该脚本编码器(Script Encoder),http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10chs.exe 。
例如,对输入文件 test.html 进行编码,生成输出文件 encode.html,在MS-DOS命令行下使用:
screnc test.html encode.html
经过编码后,如果您改动编码后的文本,哪怕只改动一个字。脚本的完整性就会丢失,从而不能再使用。
经过上述三个步骤的处理,就可以初步实现对网页的保护了(无法拷贝网页内容、无法查看正常编码状态下的源代码),不过这个处理过程仅仅是阻止了用户随意的查看脚本源代码和拷贝网页内容,相应的解密工具也已经出来的,如果要实现更安全的网页保护措施,可能还需要使用组件技术。