網(wǎng)頁(yè)加密技術(shù)
隨著互聯(lián)網(wǎng)的普及,許多珍貴文檔和最新技術(shù)資料相繼上網(wǎng),方面了廣大網(wǎng)民上網(wǎng)學(xué)習(xí)和工作,但與此同時(shí),保護(hù)網(wǎng)上作品變得更加重要。網(wǎng)站內(nèi)容提供者都希望通過(guò)使用一種簡(jiǎn)單的技術(shù),保護(hù)自己的源代碼(包括網(wǎng)頁(yè)內(nèi)容和腳本)。本文介紹了幾種常用的“網(wǎng)頁(yè)加密技術(shù)”,由淺入深的探討了相關(guān)問(wèn)題。

一、最簡(jiǎn)單的頁(yè)面內(nèi)容保護(hù)方法:
禁止復(fù)制過(guò)程中的“鼠標(biāo)拖動(dòng)”,關(guān)閉“全選”功能。只需要在網(wǎng)頁(yè)<body>中標(biāo)記中加入<body onselectstart="return false;" oncontextmenu="return false;" ondragstart="return false;">控制語(yǔ)句,就能讓訪客無(wú)法選定網(wǎng)頁(yè)內(nèi)容進(jìn)行復(fù)制。即使從IE瀏覽器“編輯”菜單下選取“全選”或用熱鍵“Ctrl+A”都沒用。
補(bǔ)充:由于在IE5.0中,可以通過(guò)先按住“Ctrl”鍵,再拖動(dòng)鼠標(biāo)的方法選定文字,從而逃避上述控制語(yǔ)句的檢測(cè),為了補(bǔ)住漏洞,還需要在上述控制語(yǔ)句的基礎(chǔ)上,加入屏蔽鍵盤輸入功能,具體方法是:
在</head>標(biāo)記前加入一段Javascript屏蔽鍵盤輸入的語(yǔ)句(函數(shù)):
<SCRIPT language=javascript>
<!--
function keydownevent()
{
alert("請(qǐng)不要使用鍵盤操作!");
return false;
}
//-->
</SCRIPT>
最后在網(wǎng)頁(yè)<body>中標(biāo)記中加入<body onkeydown='return keydownevent()' onselectstart="return false;" oncontextmenu="return false;" ondragstart="return false;">控制語(yǔ)句。
二、腳本簡(jiǎn)單編碼:
在第一種方法中,有個(gè)缺陷,訪客可通過(guò)查看IE瀏覽器菜單中的“源文件”等其它辦法獲取網(wǎng)頁(yè)源代碼,再加工處理后,使網(wǎng)頁(yè)控制語(yǔ)句失效,又可以直接拷貝了。為了防止控制語(yǔ)句被輕易刪除,有必要對(duì)網(wǎng)頁(yè)源代碼進(jìn)行編碼處理,下面的網(wǎng)頁(yè)提供了將HTML語(yǔ)句編碼的功能:
<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>將你的頁(yè)面源代碼粘貼在下面的框內(nèi),要包括所有的標(biāo)簽例如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="開始轉(zhuǎn)換">
<P align="center">
<TEXTAREA NAME="NewWords" VALUE="" ROWS=7 COLS=50></TEXTAREA>
</FORM><p align="center"> 以上是轉(zhuǎn)換好的代碼
</center>
</body>
</html>
最后,將轉(zhuǎn)換好的代碼加入如下腳本的引號(hào)""區(qū)內(nèi),就是加密后的HTML了!
<HTML>
<HEAD>
<SCRIPT LANGUAGE="Javascript">
<!--
var Words =" " //將轉(zhuǎn)換好的代碼加入如下腳本的引號(hào)""區(qū)內(nèi)
function SetNewWords()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
SetNewWords();
// -->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
腳本經(jīng)編碼后,一般的上網(wǎng)用戶即使打開了該網(wǎng)頁(yè)的源代碼,看到的也都只是些“%20%0D%0A%3Chtml%3E%0D%0A%3C%21”機(jī)器代碼(非 ASCII 字符都用 xx 編碼代替,其中 xx 等于表示該字符的十六進(jìn)制數(shù)),如果不是網(wǎng)絡(luò)專家,一般無(wú)法解密。
三、腳本高級(jí)編碼加密:
如果網(wǎng)絡(luò)專家遇到剛才介紹的第二種腳本編碼方法,只需要使用反編碼語(yǔ)句unescape就可破譯出源文件,從而失去了保護(hù)功能。為了更好的保護(hù)源代碼,可以在第二種腳本編碼方法的基礎(chǔ)上,使用微軟提供的免費(fèi)腳本編碼器(Script Encoder)來(lái)加密頁(yè)面中嵌入的腳本代碼。
Script Encoder是Microsoft出品的一個(gè)script加密工具,它是一個(gè)簡(jiǎn)單的命令行工具,可以對(duì)html文件進(jìn)行加密,加密后其中的文本部分均保持不變,只是對(duì)其中的javascript 和VBscript部分進(jìn)行加密處理,加密后的script在功能上無(wú)任何損失,僅是其代碼變成密文,用源文件方式查看只是一些亂碼。該程序很小只有64K,使用非常很簡(jiǎn)單,在DOS命令行下執(zhí)行,也可在windows下帶參數(shù)運(yùn)行。該程序除了可對(duì)html文件加密外,也可以對(duì)asa, asp, cdx,js, sct,vbs文件加密。加密后的文件大小基本無(wú)變化。加密后的javascript中原< SCRIPT LANGUAGE="JScript">行,變成< SCRIPT LANGUAGE="JScript.Encode" >,VBscript 中< SCRIPTLANGUAGE="VBScript.Encode">變成< SCRIPT LANGUAGE="VBScript" >
可到微軟網(wǎng)站免費(fèi)下載該腳本編碼器(Script Encoder),http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10chs.exe 。
例如,對(duì)輸入文件 test.html 進(jìn)行編碼,生成輸出文件 encode.html,在MS-DOS命令行下使用:
screnc test.html encode.html
經(jīng)過(guò)編碼后,如果您改動(dòng)編碼后的文本,哪怕只改動(dòng)一個(gè)字。腳本的完整性就會(huì)丟失,從而不能再使用。
經(jīng)過(guò)上述三個(gè)步驟的處理,就可以初步實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)的保護(hù)了(無(wú)法拷貝網(wǎng)頁(yè)內(nèi)容、無(wú)法查看正常編碼狀態(tài)下的源代碼),不過(guò)這個(gè)處理過(guò)程僅僅是阻止了用戶隨意的查看腳本源代碼和拷貝網(wǎng)頁(yè)內(nèi)容,相應(yīng)的解密工具也已經(jīng)出來(lái)的,如果要實(shí)現(xiàn)更安全的網(wǎng)頁(yè)保護(hù)措施,可能還需要使用組件技術(shù)。








