建立安全的Web站點(diǎn)

字號(hào):

Internet及Web已成為許多人日常生活、工作及交流的一種主要工具。由于Internet是根據(jù)一定的共識(shí)進(jìn)行自制、在全球范圍內(nèi)實(shí)現(xiàn)的龐大的系統(tǒng),它并不在法律和政治范圍內(nèi)運(yùn)行。作為Web管理員,感觸最深的是:確保Web安全不是件容易的事,并非一篇論文能說得清楚。由于Internet和Web技術(shù)的開放性和多層次性,決定了Internet和Web的安全需要格外的關(guān)注。本文就是作者根據(jù)日常工作環(huán)境,討論如何建立安全的Web站點(diǎn)。
    在討論Web站點(diǎn)安全之前,了解Web的技術(shù)原理,對(duì)于Web安全工作者而言應(yīng)該是有益處的。
    一、Web技術(shù)簡(jiǎn)介
    World Wide Web稱為萬維網(wǎng),簡(jiǎn)稱Web。它的基本結(jié)構(gòu)是采用開放式的客戶/服務(wù)器結(jié)構(gòu)(Client/Server),分成服務(wù)器端、客戶接收機(jī)及通訊協(xié)議三個(gè)部分。
    1、服務(wù)器(Web服務(wù)器)
    服務(wù)器結(jié)構(gòu)中規(guī)定了服務(wù)器的傳輸設(shè)定、信息傳輸格式及服務(wù)器本身的基本開放結(jié)構(gòu)。Web 服務(wù)器是駐留在服務(wù)器上的軟件,它匯集了大量的信息。Web服務(wù)器的作用就是管理這些文檔,按用戶的要求返回信息。
    2、客戶接收機(jī)(Web瀏覽器)
    客戶機(jī)系統(tǒng)稱為Web瀏覽器,用于向服務(wù)器發(fā)送資源索取請(qǐng)求,并將接收到的信息進(jìn)行解碼和顯示。Web瀏覽器是客戶端軟件,它從Web服務(wù)器上下載和獲取文件,翻譯下載文件中的HTML代碼,進(jìn)行格式化,根據(jù)HTML中的內(nèi)容在屏幕上顯示信息。如果文件中包含圖像以及其他格式的文件(如聲頻、視頻、Flash等),Web瀏覽器會(huì)作相應(yīng)的處理或依據(jù)所支持的的插件進(jìn)行必要的顯示。
    3、通訊協(xié)議(HTTP協(xié)議)
    Web瀏覽器與服務(wù)器之間遵循HTTP協(xié)議進(jìn)行通訊傳輸。HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)是分布式的Web應(yīng)用的核心技術(shù)協(xié)議,在TCP/IP協(xié)議棧中屬于應(yīng)用層。它定義了Web瀏覽器向Web服務(wù)器發(fā)送索取Web頁面請(qǐng)求的格式,以及Web頁面在Internet上的傳輸方式。
    Web服務(wù)器通過Web瀏覽器與用戶交互操作,相互間采用HTTP協(xié)議相互通信(服務(wù)器和客戶端都必須安裝HTTP協(xié)議)。Web服務(wù)器也稱為HTTPd服務(wù)器(d是指UNIX系統(tǒng)中的daemon)。最早的Web服務(wù)器軟件是在UNIX系統(tǒng)上發(fā)展起來的,有CERN和NCSA兩種類型。現(xiàn)在占居市場(chǎng)分額的是Apache服務(wù)器軟件,并且可以在多種環(huán)境下運(yùn)行,如Unix、Linux、Solaris、Windows 2000等。在Window環(huán)境下,由于Microsoft得天獨(dú)厚的優(yōu)勢(shì),因而IIS (Internet Information Server)成為Windows NT及 Windows 2000下主要的服務(wù)器軟件。
    Web瀏覽器軟件中,Netscape的Web瀏覽器NN(Netscape Navigator)、NC(Netscape Communicator)具有最廣泛的系統(tǒng)平臺(tái)支持,可以在所有平臺(tái)上運(yùn)行;Microsoft的IE(Internet Explorer)則是Windows平臺(tái)上運(yùn)行最完美的瀏覽器軟件。
    Web服務(wù)器和Web瀏覽器之間通過HTTP協(xié)議相互響應(yīng)。一般情況下,Web服務(wù)器在80端口等候Web瀏覽器的請(qǐng)求, Web瀏覽器通過3次握手與服務(wù)器建立起TCP/IP聯(lián)接。
    大多數(shù)Web服務(wù)器和Web瀏覽器已使用了HTTP/1.1版。HTTP1.1具有許多新的特色:
    (1) 能夠識(shí)別主機(jī)名,允許多個(gè)虛擬主機(jī)名共存于一個(gè)IP上。
    (2) 具有內(nèi)容協(xié)商的能力,允許服務(wù)器以多種格式存取資源,供Web服務(wù)器和Web瀏覽器選擇版本。
    (3) 通過持續(xù)性聯(lián)接加速Web服務(wù)器的響應(yīng)速度。
    (4) 允許Web瀏覽器請(qǐng)求索取文件的某部分,從而為端點(diǎn)續(xù)傳功能提供更好的支持。
    4、公共網(wǎng)關(guān)接口介紹(CGI)
    在討論Internet和Web技術(shù)給人們提供瀟灑服務(wù)的同時(shí),不能不提到CGI(Common Gateway Interface)。它是Web服務(wù)器與外部應(yīng)用程序之間交換數(shù)據(jù)的標(biāo)準(zhǔn)接口軟件。有了CGI,Web網(wǎng)站將不只是靜態(tài)頁面的收藏點(diǎn),而是可以通過在Web服務(wù)器上運(yùn)行一定的程序,輸出一個(gè)動(dòng)態(tài)的頁面。CGI是一種獨(dú)立于語言的接口,CGI程序可以使用任何可以訪問環(huán)境變量和產(chǎn)生輸出的編程語言來編寫,有C、C++、PERL、Shell等。
    CGI與Web服務(wù)器的關(guān)系:首先,用戶的Web 服務(wù)器必須支持CGI程序,并且CGI應(yīng)用程序必須在Web服務(wù)器上運(yùn)行??蛻舳?Web瀏覽器)常用Post、Get兩種方式向Web服務(wù)器提交表單數(shù)據(jù)(圖、表、文字的鏈接等),Web服務(wù)器采用相應(yīng)的數(shù)據(jù)傳遞方式向CGI應(yīng)用程序傳遞數(shù)據(jù)。CGI對(duì)數(shù)據(jù)處理后,將動(dòng)態(tài)生成的Web頁面發(fā)給Web服務(wù)器,服務(wù)器再把頁面發(fā)送給發(fā)送請(qǐng)求數(shù)據(jù)的客戶端??蛻舳擞肞ost 方式遞交數(shù)據(jù),Web 服務(wù)器按照標(biāo)準(zhǔn)方式向CGI輸入和接受數(shù)據(jù),CGI同樣按標(biāo)準(zhǔn)方式讀取和輸出數(shù)據(jù);客戶端用Get方式遞交數(shù)據(jù),在Unix類系統(tǒng)中Web服務(wù)器通過環(huán)境變量方式把數(shù)據(jù)轉(zhuǎn)交CGI應(yīng)用程序,CGI應(yīng)用程序須從環(huán)境變量中讀入數(shù)據(jù),輸出結(jié)果同樣送到標(biāo)準(zhǔn)輸出中。
    二、建立Web安全體系
    Web賴以生成的環(huán)境包括計(jì)算機(jī)硬件、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、許多的網(wǎng)絡(luò)服務(wù)和應(yīng)用,所有這些都存在著安全隱患,最終威脅到Web的安全。Web 的安全體系結(jié)構(gòu)非常復(fù)雜主要包括以下幾個(gè)方面:
    * 客戶端軟件(既Web瀏覽器軟件)的安全;
    * 運(yùn)行瀏覽器的計(jì)算機(jī)設(shè)備及其操作系統(tǒng)的安全(主機(jī)系統(tǒng)安全);
    * 客戶端的局域網(wǎng)(LAN);
    * Internet;
    * 服務(wù)器端的局域網(wǎng)(LAN);
    * 運(yùn)行服務(wù)器的計(jì)算機(jī)設(shè)備及操作系統(tǒng)的安全(主機(jī)系統(tǒng)的安全);
    * 服務(wù)器上的Web服務(wù)器軟件。