[摘要] 本文提出了一個(gè)用純軟件的方式提高WEB服務(wù)器響應(yīng)速度的方案,該方案具有硬件投入費(fèi)用低、安全、高效等優(yōu)點(diǎn),并且通過與常用方案的比較闡述了其原理和應(yīng)用前景。
[關(guān)鍵詞] PHP網(wǎng)絡(luò)編程語(yǔ)言 Mysql數(shù)據(jù)庫(kù) APACHE網(wǎng)站服務(wù)器 免費(fèi)的UNIX操作系統(tǒng)
一、引言
我們架設(shè)一個(gè)在UNIX服務(wù)器上運(yùn)行的基于APACHE WEB服務(wù)器的網(wǎng)站時(shí),出于對(duì)提高WEB服務(wù)器反應(yīng)速度的考慮,產(chǎn)生了一個(gè)大膽的方案,但是基于系統(tǒng)安全性和穩(wěn)定性的考慮,最后沒有使用該方案。然而,我們認(rèn)為這個(gè)設(shè)想對(duì)于提高WEB服務(wù)器的反映速度有很大的作用,如果能夠用一定的時(shí)間做出一套基于這個(gè)設(shè)想的完整方案,將會(huì)大大提高WEB服務(wù)器的反映速度?,F(xiàn)在我們已經(jīng)用PHP腳本語(yǔ)言基本實(shí)現(xiàn)了這個(gè)方案。
二、方案的由來
這是一個(gè)關(guān)于旅游的綜合性網(wǎng)站,包括旅游景區(qū)、景點(diǎn)信息、各地的賓館飯店、民間特產(chǎn)、民風(fēng)民俗等。根據(jù)用戶的要求分為3個(gè)功能模塊:后臺(tái)數(shù)據(jù)庫(kù)管理模塊,前端顯示模塊,注冊(cè)用戶管理模塊。注冊(cè)用戶可以在任意時(shí)間、地點(diǎn)登陸網(wǎng)站反映最新的景區(qū)動(dòng)態(tài)。
由于整個(gè)網(wǎng)站基于MYSQL數(shù)據(jù)庫(kù),網(wǎng)頁(yè)中的所有媒體信息包括文字、圖片、視頻文件等都存儲(chǔ)在數(shù)據(jù)庫(kù)中,當(dāng)瀏覽者訪問時(shí),所有的頁(yè)面都動(dòng)態(tài)生成,風(fēng)格和樣式用PHP程序控制,所以WEB服務(wù)器的響應(yīng)速度會(huì)很慢。怎樣解決此問題?筆者當(dāng)時(shí)正在研究PHP的一組文件操作函數(shù),并且想編寫一個(gè)關(guān)于文件操作的類,于是設(shè)想是否先生成一個(gè)靜態(tài)頁(yè)面,準(zhǔn)確的說是生成一個(gè)文件夾,包括一個(gè)HTML文件,頁(yè)面中嵌入的圖片和視頻文件,然后將HTML文件的路徑存入MYSQL數(shù)據(jù)庫(kù)。這樣用戶請(qǐng)求的是靜態(tài)頁(yè)面,一次生成可以讓用戶無(wú)數(shù)次訪問,而不是用戶訪問的時(shí)候每次臨時(shí)生成。這既可以減輕MYSQL數(shù)據(jù)庫(kù)的負(fù)擔(dān),又可以提高WEB服務(wù)器的響應(yīng)速度。于是提出了基于此原理的方案,詳見原理圖1;目前大部分網(wǎng)站所使用的方案詳見原理圖2。其中橢圓和圓代表對(duì)象或群體,矩形代表功能模塊。
三、此方案的原理
比較原理圖1和圖2,可以發(fā)現(xiàn)圖1比圖2多了一個(gè)“文件”對(duì)象,這是兩種方案區(qū)別的關(guān)鍵,該文件對(duì)象實(shí)際是大數(shù)據(jù)塊,如圖片、大量的文字、視頻等載體。已注冊(cè)用戶登錄后,他們將景區(qū)信息如文字、圖片、視頻等提交到服務(wù)器,用戶管理模塊將這些數(shù)據(jù)生成相應(yīng)的文件存儲(chǔ)到相應(yīng)的目錄下,同時(shí)生成一個(gè)固定風(fēng)格的頁(yè)面,并將對(duì)應(yīng)的目錄轉(zhuǎn)換為網(wǎng)絡(luò)路徑后存儲(chǔ)到MYSQL數(shù)據(jù)庫(kù)中。其中生成的網(wǎng)頁(yè)中顯示了相應(yīng)景區(qū)的圖片、文字、視頻等。顯示模塊只要在數(shù)據(jù)庫(kù)中調(diào)用相應(yīng)的路徑就即可。后臺(tái)管理模塊主要提供給網(wǎng)站管理人員使用。
四、常用方案和此方案的比較
出于安全性的考慮,大部分網(wǎng)站使用的都是第二種方案,然而第一種方案我們至今還沒有找到攻擊它的方式。下面分幾個(gè)方面來比較這兩個(gè)方案。
費(fèi)用比較:要達(dá)到相同的響應(yīng)速度,在硬件方面方案2要比方案1付出幾倍甚至更多的資金。方案1的軟件編寫比方案2難度更高,不過總體來講方案1比方案2的總投入少的多。
安全性和穩(wěn)定性:方案1可能不如方案2安全和穩(wěn)定。因?yàn)榉桨?涉及到文件操作。
結(jié)論:方案1更適合中小企業(yè)或教育類網(wǎng)站,可以節(jié)省資金;方案2是目前大的商業(yè)站點(diǎn)的必選。
五、分析第一種方案的安全性
方案1的弱點(diǎn)是它的文件操作,有惡意的用戶(以下簡(jiǎn)稱黑客)會(huì)有如下的機(jī)會(huì)來攻擊用方案1實(shí)現(xiàn)的網(wǎng)站。
1.提交惡意代碼。已注冊(cè)的用戶可以提交大量的文字,黑客會(huì)將他們自己寫的代碼嵌入文字中,然后提交到網(wǎng)站上。因?yàn)榉桨?中是將這些文字保存為文件,所以黑客可以直接訪問這個(gè)文件,來執(zhí)行他們的惡意代碼。
2.提交惡意文件。將惡意代碼文件作為圖片上載然后執(zhí)行,比方式(1)需要更多的技巧。
3.用某些軟件探測(cè)APACHE服務(wù)器在UNIX系統(tǒng)上的系統(tǒng)用戶名和密碼,然后用這個(gè)用戶登錄,為所欲為。
如何防止(1)攻擊呢?我們?cè)赑HP程序中過濾了WEB程序中的標(biāo)記如“<”,“>”等,黑客提交的代碼無(wú)法執(zhí)行,并且我們生成的文件名是隨機(jī)的,黑客根本不可能找到自己提交的文件。對(duì)于(2)攻擊,我們存儲(chǔ)的圖片文件沒有擴(kuò)展名,并且文件名不是根據(jù)用戶提供的名字來命名的,也是隨機(jī)生成的。為了以防萬(wàn)一,我們對(duì)圖片文件的類型做了分析,并且限制圖片的類型和大小,只能是BMP和JPG格式。所以,黑客成功的幾率幾乎等于零。對(duì)于(3)攻擊,到現(xiàn)在為止,我們還不知道有能夠破解系統(tǒng)用戶密碼的軟件,并且是在不確切知道這個(gè)系統(tǒng)用戶名字的情況下,所以黑客如果有這樣的功力,那么他們的攻擊對(duì)象應(yīng)該不是這些小型網(wǎng)站。
綜上所述,筆者認(rèn)為方案1是一種中小企業(yè)網(wǎng)站的性價(jià)比較高的解決方案,應(yīng)該更好地推廣和利用。