網(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)題。

網(wǎng)頁(yè)加密技術(shù)

一、最簡(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 EncoderMicrosoft出品的一個(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ù)。