官术网_书友最值得收藏!

3.4 應(yīng)用于Web應(yīng)用程序的防范技術(shù)

在本章中,我們已經(jīng)介紹了多種針對Web應(yīng)用程序的攻擊和防范對策,但是沒有一本能夠包含所有Web平臺攻擊的完備目錄。本節(jié)我們要總結(jié)全面加固Web平臺最重要的幾個(gè)方面,以及目前最流行的Web平臺IIS、Apache和PHP上存在的漏洞和防范技術(shù)。

3.4.1 適用于任何應(yīng)用程序的防范技術(shù)

如今的Web應(yīng)用程序可能會包含危險(xiǎn)的安全缺陷,這些應(yīng)用程序的全球化部署使其很容易遭受攻擊,而這些攻擊會發(fā)現(xiàn)并惡意探測各種安全漏洞。

Web應(yīng)用程序需要有深度防御的措施來避免和減少安全性漏洞。這種方式假設(shè)所有的安全預(yù)防措施都可能失敗,所以安全性依賴于多層的機(jī)制從而能夠覆蓋其他層的失敗。為了減少成功攻擊的可能性,我們必須做出必要的努力來引入適當(dāng)?shù)陌踩苑雷o(hù)措施。要達(dá)到這一點(diǎn),必須使用各種技術(shù)和工具來確保安全性涵蓋整個(gè)Web應(yīng)用程序。

1.應(yīng)用最新的安全補(bǔ)丁

維護(hù)強(qiáng)壯和安全的Web平臺最有效的方法是保證系統(tǒng)具備最新的安全補(bǔ)丁。這沒有捷徑,你必須持續(xù)地為平臺和應(yīng)用打上補(bǔ)丁。盡管你可以采取許多其他的操作來更好地加固系統(tǒng)抵御攻擊,但是在安全更新公布時(shí)應(yīng)用到你的系統(tǒng)中是你所能做的最重要的事情。

2.不要在源代碼中放入私有數(shù)據(jù)

(1)ASP腳本中不要用明文SQL連接串。

(2)在應(yīng)用配置文件中不要使用明文密碼,始終避免在global.asa或web.config等應(yīng)用配置文件中使用明文密碼。

(3)不要使用帶有.inc擴(kuò)展名的包含文件,將包含文件改名為.a(chǎn)sp、 .php或者對你的Web應(yīng)用平臺來說合適的擴(kuò)展名。

(4)不要在腳本中寫入包含私有信息如電子郵件地址、目錄結(jié)構(gòu)信息和密碼的注釋,不要編寫易受攻擊的文檔;確保刪除可能用來針對你的Web平臺和應(yīng)用信息。

3.定期掃描網(wǎng)絡(luò)中的脆弱服務(wù)器

避免這些危害的最佳機(jī)制是定期掃描可能引發(fā)這些危害的漏洞。有許多非常有用的Web應(yīng)用評估產(chǎn)品,如HP WebInspect(如圖3-23所示)和Watchfire AppScan(如圖3-24所示),這些產(chǎn)品都能很好地識別Web平臺、應(yīng)用和配置漏洞。

圖3-23 HP WebInspec安全評估工具操作界面

圖3-24 Watchfire AppScan應(yīng)用安全測試工具

4.了解遭到攻擊的跡象

最后,也可能是最明顯的,Web服務(wù)器日志常常是第一個(gè)顯示未授權(quán)活動的地方。將分析日志文件作為標(biāo)準(zhǔn)操作程序的一部分常常能幫助你檢測攻擊和入侵。

3.4.2 應(yīng)用于IIS的防范技術(shù)

IIS是一種Web服務(wù)組件,其中包括Web服務(wù)器、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器,分別用于網(wǎng)頁瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事。

截至2015年4月15日,全球部署IIS的系統(tǒng)數(shù)量大概有444萬余個(gè)。以占比最大的IIS 7.5(42.3%)為例,美國、中國、英國及德國為分布廣泛的稠密區(qū)域,其中中國占比16.4%, IIS.7.5的部署量超過35萬個(gè)。

微軟的產(chǎn)品一向是眾矢之的,因此IIS服務(wù)器特別容易成為攻擊者的靶子。搞清楚了這一點(diǎn)后,我們必須準(zhǔn)備執(zhí)行大量的安全措施,來保證搭建在IIS服務(wù)器上的Web應(yīng)用程序是安全的。

Internet信息服務(wù)(IIS)管理器如圖3-25所示。

圖3-25 Internet信息服務(wù)(IIS)管理器

1.保持Windows升級

你必須在第一時(shí)間及時(shí)地更新所有的升級,并為系統(tǒng)打好一切補(bǔ)丁??紤]將所有的更新下載到你網(wǎng)絡(luò)上的一個(gè)專用的服務(wù)器上,并在該機(jī)器上以Web的形式將文件發(fā)布出來。通過這些工作,可以防止你的Web服務(wù)器接受直接的Internet訪問。

2.使用IIS防護(hù)工具

這個(gè)工具有許多實(shí)用的優(yōu)點(diǎn),然而,請慎重地使用這個(gè)工具。如果你的Web服務(wù)器和其他服務(wù)器相互作用,請首先測試一下防護(hù)工具,以確定它已經(jīng)被正確地配置,保證其不會影響Web服務(wù)器與其他服務(wù)器之間的通信。圖3-26為網(wǎng)站安全狗防護(hù)工具。

圖3-26 網(wǎng)站安全狗(IIS版)——網(wǎng)站安全防護(hù)工具

3.移除默認(rèn)的Web站點(diǎn)

很多攻擊者瞄準(zhǔn)inetpub這個(gè)文件夾,并在里面放置一些偷襲工具,從而造成服務(wù)器的癱瘓。防止這種攻擊最簡單的方法就是在IIS里將默認(rèn)的站點(diǎn)禁用。然后,因?yàn)榫W(wǎng)蟲們都是通過IP地址訪問你的網(wǎng)站的(他們一天可能要訪問成千上萬個(gè)IP地址),他們的請求可能遇到麻煩。將你真實(shí)的Web站點(diǎn)指向一個(gè)背部分區(qū)的文件夾,且必須包含安全的NTFS權(quán)限。

4.卸載不需要的服務(wù)

進(jìn)入計(jì)算機(jī)的最簡單途徑就是通過FTP訪問。FTP本身就是被設(shè)計(jì)滿足簡單讀/寫訪問的,如果你執(zhí)行身份認(rèn)證,你會發(fā)現(xiàn)你的用戶名和密碼都是通過明文的形式在網(wǎng)絡(luò)上傳播的。SMTP是另一種允許到文件夾的寫權(quán)限的服務(wù)。通過禁用這兩項(xiàng)服務(wù),你能避免更多的黑客攻擊。

5.有規(guī)則地檢查你的管理員組和服務(wù)

檢查IIS服務(wù)器上的服務(wù)列表并保持盡量少的服務(wù)必須成為你每天的任務(wù)。你應(yīng)該記住哪個(gè)服務(wù)應(yīng)該存在,哪個(gè)服務(wù)不應(yīng)該存在。Windows 2000 Resource Kit帶給我們一個(gè)有用的程序,叫作tlist.exe,它能列出每種情況運(yùn)行在svchost之下的服務(wù)。運(yùn)行這個(gè)程序可以尋找到一些你想要知道的隱藏服務(wù)。給你一個(gè)提示:任何含有daemon幾個(gè)字的服務(wù)可能不是Windows本身包含的服務(wù),都不應(yīng)該存在于IIS服務(wù)器上。

6.嚴(yán)格控制服務(wù)器的寫訪問權(quán)限

這聽起來很容易,然而,在大學(xué)校園里,一個(gè)Web服務(wù)器實(shí)際上是有很多“作者”的。教職人員都希望他們的課堂信息能被遠(yuǎn)程學(xué)生訪問;職員們則希望與其他的職員共享他們的工作信息。服務(wù)器上的文件夾可能出現(xiàn)極其危險(xiǎn)的訪問權(quán)限。將這些信息共享或是傳播出去的一個(gè)途徑是安裝第二個(gè)服務(wù)器以提供專門的共享和存儲目的,然后配置你的Web服務(wù)器來指向共享服務(wù)器。這個(gè)步驟能讓網(wǎng)絡(luò)管理員將Web服務(wù)器本身的寫權(quán)限僅僅限制給管理員組。

7.設(shè)置復(fù)雜的密碼

如果有用戶使用弱密碼(如“password”或“adminlogin”或者任何字典單詞),那么黑客能快速并簡單地入侵這些用戶的賬號。

8.減少/排除Web服務(wù)器上的共享

如果網(wǎng)絡(luò)管理員是唯一擁有Web服務(wù)器寫權(quán)限的人,就沒有理由讓任何共享存在。共享是對黑客最大的誘惑。此外,通過運(yùn)行一個(gè)簡單的循環(huán)批處理文件,黑客能夠查看一個(gè)IP地址列表,利用\命令尋找Everyone/完全控制權(quán)限的共享。

9.禁用TCP/IP協(xié)議中的NetBIOS

一方面,很多用戶希望通過UNC路徑名訪問Web服務(wù)器,但隨著NetBIOS被禁用,他們便不能這么做了。另一方面,隨著NetBIOS被禁用,黑客就不能看到你局域網(wǎng)上的資源了。這是一把雙刃劍,如果網(wǎng)絡(luò)管理員部署了這個(gè)工具,下一步便是指導(dǎo)Web用戶如何在NetBIOS失效的情況下發(fā)布信息。

10.使用TCP端口阻塞

如果你熟悉每個(gè)通過合法原因訪問你服務(wù)器的TCP端口,那么你可以進(jìn)入你的網(wǎng)絡(luò)接口卡的“屬性”選項(xiàng)卡,選擇綁定的TCP/IP協(xié)議,阻塞所有你不需要的端口。你必須小心地使用這一工具,因?yàn)槟悴⒉幌M麑⒆约烘i在Web服務(wù)器之外,特別是在當(dāng)你需要遠(yuǎn)程登錄服務(wù)器的情況下。

11.仔細(xì)檢查.bat和.exe文件

每周搜索一次.bat和.exe文件,檢查服務(wù)器上是否存在黑客最喜歡而對你來說將是一場噩夢的可執(zhí)行文件。在這些破壞性的文件中,也許有一些是.reg文件,如果你右擊并選擇編輯,你可以發(fā)現(xiàn)黑客已經(jīng)制造并讓他們能進(jìn)入你系統(tǒng)的注冊表文件。你可以刪除這些沒有任何意義但會給入侵者帶來便利的主鍵。

12.管理IIS目錄安全

IIS目錄安全允許你拒絕特定的IP地址、子網(wǎng)甚至是域名。作為選擇,我選擇了一個(gè)被稱為WhosOn的軟件,它讓我能夠了解哪些IP地址正在試圖訪問服務(wù)器上的特定文件。WhosOn列出了一系列的異常。如果你發(fā)現(xiàn)一個(gè)家伙正在試圖訪問你的cmd.exe,你可以選擇拒絕這個(gè)用戶訪問Web服務(wù)器。當(dāng)然,在一個(gè)繁忙的Web站點(diǎn),這可能需要一個(gè)全職的員工。然而,在內(nèi)部網(wǎng),這真的是一個(gè)非常有用的工具。你可以對所有局域網(wǎng)內(nèi)部用戶提供資源,也可以對特定的用戶提供。

13.使用NTFS安全

你的NTFS驅(qū)動器使用的是EVERYONE/完全控制權(quán)限,除非你手工關(guān)掉它們。關(guān)鍵是不要把自己鎖定在外,不同的人需要不同的權(quán)限,管理員需要完全控制,后臺管理賬戶也需要完全控制,系統(tǒng)和服務(wù)各自需要一種級別的訪問權(quán)限,取決于不同的文件。最重要的文件夾是System 32,這個(gè)文件夾的訪問權(quán)限越小越好。在Web服務(wù)器上使用NTFS權(quán)限能幫助你保護(hù)重要的文件和應(yīng)用程序。

14.管理用戶賬戶

如果你已經(jīng)安裝IIS,你可能產(chǎn)生了一個(gè)TSInternetUser賬戶。除非你真正需要這個(gè)賬戶,否則你應(yīng)該禁用它。這個(gè)用戶很容易被滲透,是黑客們的顯著目標(biāo)。為了幫助管理用戶賬戶,確定你的本地安全策略沒有問題,IUSR用戶的權(quán)限也應(yīng)該盡可能小。

15.審計(jì)你的Web服務(wù)器

審計(jì)對你的計(jì)算機(jī)的性能有著較大的影響,因此如果你不經(jīng)常察看的話,還是不要做審計(jì)了。如果你真的能用到它,請審計(jì)系統(tǒng)事件并在你需要的時(shí)候加入審計(jì)工具。如果你正在使用前面提到的WhosOn工具,審計(jì)就不那么重要了。默認(rèn)下,IIS總是記錄訪問,WhosOn會將這些記錄放置在一個(gè)非常易讀的數(shù)據(jù)庫中,你可以通過Access或是Excel打開它。如果你經(jīng)常查看異常數(shù)據(jù)庫,你能在任何時(shí)候找到服務(wù)器的脆弱點(diǎn)。

3.4.3 應(yīng)用于Apache的防范技術(shù)

Apache HTTP Server(以下簡稱Apache)是Apache軟件基金會的一個(gè)開放源碼的網(wǎng)頁服務(wù)器,可以在大多數(shù)計(jì)算機(jī)操作系統(tǒng)中運(yùn)行,是最流行的Web服務(wù)器軟件之一。雖然近年來Nginx和Lighttpd等Web Server的市場份額增長得很快,但Apache仍然是這個(gè)領(lǐng)域中獨(dú)一無二的巨頭,互聯(lián)網(wǎng)上大多數(shù)的Web應(yīng)用依然運(yùn)行在Apache上。

Apache作為Web應(yīng)用的載體,一旦出現(xiàn)安全問題,那么運(yùn)行在其上的Web應(yīng)用的安全也無法得到保障,所以研究Apache的漏洞與安全性就非常有意義了。

1.Apache漏洞分析

(1)遠(yuǎn)程拒絕服務(wù)漏洞。

漏洞描述:Apache在處理Range選項(xiàng)生成回應(yīng)時(shí)存在漏洞,遠(yuǎn)程攻擊者可能利用此漏洞通過發(fā)送惡意請求導(dǎo)致服務(wù)器失去響應(yīng),從而導(dǎo)致拒絕服務(wù)。

此漏洞源于Apache在處理Range頭選項(xiàng)中包含的大量重疊范圍指定命令時(shí)存在的問題,攻擊者可通過發(fā)送到服務(wù)器的特制HTTP請求耗盡系統(tǒng)資源,導(dǎo)致Apache失去響應(yīng),甚至造成操作系統(tǒng)資源耗盡。

漏洞利用原理:HTTP請求中的Range選項(xiàng)定義了資源文件的分片請求方式,一般常用于網(wǎng)絡(luò)的斷點(diǎn)續(xù)傳功能。攻擊者通過在HTTP請求的Range選項(xiàng)中設(shè)置大量重疊的范圍指定命令,Apache在處理這樣的請求時(shí)需要消耗大量的CPU和內(nèi)存資源,導(dǎo)致Apache失去響應(yīng),甚至造成操作系統(tǒng)資源耗盡。這樣攻擊者可以利用較小的代價(jià)實(shí)現(xiàn)對目標(biāo)服務(wù)器的拒絕服務(wù)攻擊,利用簡單,且影響范圍巨大。

(2)Apache文件解析漏洞。

Apache對于文件名的解析是從后往前解析的,直到遇見一個(gè)它認(rèn)識的文件類型為止。因此,如果Web目錄下存在以類似webshell.php.test這樣格式命名的文件,Apache在解析時(shí)因?yàn)椴徽J(rèn)識.test這個(gè)文件類型,所以會一直往前解析,當(dāng)解析到.php時(shí),它認(rèn)識了,因此會將它解析為PHP文件。

Apache的這種解析特性經(jīng)常被用來繞過Web應(yīng)用的文件上傳檢測。當(dāng)Web應(yīng)用的文件上傳功能在檢測上傳文件的合法性時(shí),如果僅通過檢測上傳文件的擴(kuò)展名來判斷文件是否合法,就可以利用Apache的這種文件名解析特征繞過Web應(yīng)用的檢測。

2.對Apache進(jìn)行安全加固

Apache的安全加固我們主要從以下兩點(diǎn)考慮:一是Apache Web Server本身是否安全,如是否存在安全漏洞;二是Apache Web Server是否提供了可使用的安全功能,這部分主要是檢查Apache的配置是否得當(dāng),在安全性、可用性、穩(wěn)定性之間取得平衡。

(1)Apache版本的選擇與安裝注意事項(xiàng)。

檢查目前使用的Apache版本是否存在安全漏洞,如果存在,需要升級到新的安全版本。在選擇Apache的版本時(shí),我們一般選擇最新的穩(wěn)定版本。這樣可以在安全性和穩(wěn)定性之間取得一個(gè)很好的平衡。如果從低版本升級到高版本時(shí),建議先在測試環(huán)境中測試通過后再進(jìn)行升級,以避免由于兼容性帶來的問題。在安裝時(shí)使用自定義的安裝路徑,并配置使用自定義的Web目錄。

(2)只加載必要的Module(模塊)。

Apache有很多官方與非官方的Module,很多漏洞都是由于Apache的Module造成的。所以我們需要檢查Apache的Module安裝情況,根據(jù)“最小權(quán)限原則”,應(yīng)該盡可能地減少不必要的Module,對于要使用的Module,則檢查其對應(yīng)版本是否存在已知的安全漏洞??梢栽趆ttpd.conf中配置需要加載或禁用的Module。

(3)Apache日志安全設(shè)置。

不論在哪種服務(wù)器上,日志都是一個(gè)非常重要的部分,我們需要對它嚴(yán)加保護(hù)。在Apache上也是如此,如圖3-27所示。首先要修改日志的默認(rèn)保存路徑,然后設(shè)置只允許管理員有日志保存目錄的完全控制權(quán)限。

圖3-27 Apache錯(cuò)誤日志

(4)網(wǎng)站目錄權(quán)限配置。

原則:目錄有寫入權(quán)限,一定不要分配執(zhí)行權(quán)限;目錄有執(zhí)行權(quán)限,一定不要分配寫入權(quán)限。網(wǎng)站上傳目錄和數(shù)據(jù)庫目錄一般需要分配“寫入”權(quán)限,但一定不要分配執(zhí)行權(quán)限。其他目錄一般只分配“讀取”和“記錄訪問”權(quán)限即可。

(5)關(guān)閉Apache的目錄瀏覽功能。

如果Apache采用默認(rèn)配置,當(dāng)Web目錄下不存在默認(rèn)索引頁面(如index.html)時(shí),會將當(dāng)前目錄下的所有文件和目錄都列出來,這是十分危險(xiǎn)的。

可以通過以下兩種方法來關(guān)閉目錄瀏覽功能:①打開httpd.conf配置文件,查找“Options Indexes FollowSymLinks”,修改為“Options -Indexes”,然后保存并重啟Apache服務(wù)生效;②修改.htaccess文件——在.htaccess文件里加入“Options -Indexes”(沒有雙引號)就可以阻止目錄列表的顯示了。這樣以后再訪問不存在默認(rèn)索引頁面的目錄時(shí),Apache將會返回403錯(cuò)誤頁面。

1 單擊WampServer程序圖標(biāo);在“Powered by Alter Way”選項(xiàng)欄中,單擊“Apache”按鈕;再雙擊“httpd.conf”配置文件按鈕,如圖3-28所示。

圖3-28 打開httpd.conf配置文件

2 在“查找內(nèi)容”文本框中輸入“Options Indexes FollowSymLinks”,單擊“查找下一個(gè)”按鈕,找到httpd.conf配置文件中“Options Indexes FollowSymLinks”一行,將“Options Indexes FollowSymLinks”修改為“Options -Indexes”,保存文件即可,如圖3-29所示。

圖3-29 修改httpd.conf配置文件

(6)修改Apache默認(rèn)banner信息。

Apache的banner會泄露服務(wù)器的操作系統(tǒng)和Apache版本等相關(guān)信息,而這些信息對攻擊者是非常有用的,我們需要修改默認(rèn)配置來阻止這些信息的泄露。

3.4.4 應(yīng)用于PHP的防范技術(shù)

PHP(Hypertext Preprocessor,超文本預(yù)處理器)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。PHP獨(dú)特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。它可以比CGI或者Perl更快速地執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。

目前,基于PHP的網(wǎng)站開發(fā)已經(jīng)成為網(wǎng)站開發(fā)的主流,PHP網(wǎng)站攻擊與安全防范方面越來越引起人們的重視。

1.常見PHP網(wǎng)站安全漏洞有哪些

對于PHP,目前常見的漏洞有5種,分別是Session文件漏洞、SQL注入漏洞、腳本命令執(zhí)行漏洞、全局變量漏洞和文件漏洞。下面分別對這些漏洞進(jìn)行簡要的介紹。

(1)Session文件漏洞。

Session攻擊是黑客最常用到的攻擊手段之一。當(dāng)一個(gè)用戶訪問某一個(gè)網(wǎng)站時(shí),為了避免客戶每進(jìn)入一個(gè)頁面都要輸入賬號和密碼,PHP設(shè)置了Session和Cookies用于方便用戶的使用和訪問。

(2)SQL注入漏洞。

在進(jìn)行網(wǎng)站開發(fā)時(shí),程序員由于對用戶輸入數(shù)據(jù)缺乏全面判斷或者過濾不嚴(yán)導(dǎo)致服務(wù)器執(zhí)行一些惡意信息,如用戶信息查詢等,黑客可以根據(jù)惡意程序返回的結(jié)果獲取相應(yīng)的信息。這就是所謂的SQL注入漏洞。

(3)腳本執(zhí)行漏洞。

腳本執(zhí)行漏洞是由于程序員在開發(fā)網(wǎng)站時(shí)對用戶提交的URL參數(shù)過濾較少引起的,用戶提交的URL可能包含惡意代碼導(dǎo)致跨站腳本攻擊。腳本執(zhí)行漏洞在以前的PHP網(wǎng)站中經(jīng)常存在,但是隨著PHP版本的升級,這些問題已經(jīng)減少或者不存在了。

(4)全局變量漏洞。

PHP中的變量在使用時(shí)不像其他開發(fā)語言那樣需要事先聲明,PHP中的變量可以不經(jīng)聲明就直接使用,使用時(shí)系統(tǒng)自動創(chuàng)建,而且也不需要對變量類型進(jìn)行說明,系統(tǒng)會自動根據(jù)上下文環(huán)境確定變量類型。這種方式可以大大減少程序員編程中出錯(cuò)的概率,使用起來非常方便。

(5)文件漏洞。

文件漏洞通常是由于網(wǎng)站開發(fā)者在進(jìn)行網(wǎng)站設(shè)計(jì)時(shí)對外部提供的數(shù)據(jù)缺乏充分的過濾導(dǎo)致黑客利用其中的漏洞在Web進(jìn)程上執(zhí)行相應(yīng)的命令。假如在lsm.php中包含這樣一段代碼:include($b."/aaa.php".),這對黑客來說,可以通過變量$b來實(shí)現(xiàn)遠(yuǎn)程攻擊,可以是黑客自己的代碼,用來實(shí)現(xiàn)對網(wǎng)站的攻擊;也可以向服務(wù)器提交a.php include=http://l27.0.0.1/b.php,然后執(zhí)行b.php的指令。

2.PHP常見漏洞的防范措施與技術(shù)

(1)對于Session漏洞的防范。

從前面的分析可以知道,Session攻擊最常見的就是會話劫持,也就是黑客通過各種攻擊手段獲取用戶的Session ID,然后利用被攻擊用戶的身份來登錄相應(yīng)網(wǎng)站。為此,這里可以用以下幾種方法進(jìn)行防范:一是定期更換Session ID,更換Session ID可以用PHP自帶函數(shù)來實(shí)現(xiàn);二是更換Session名稱,通常情況下Session的默認(rèn)名稱是PHPSESSID,這個(gè)變量一般是在Cookies中保存的,如果更改了它的名稱,就可以阻擋黑客的部分攻擊;三是對透明化的Session ID進(jìn)行關(guān)閉處理,所謂透明化是指在HTTP請求沒有使用Cookies來制定Session ID時(shí),Sessioin ID使用鏈接來傳遞。關(guān)閉透明化Session ID可以通過操作php.ini文件來實(shí)現(xiàn);四是通過URL傳遞隱藏參數(shù),這樣可以確保即使黑客獲取了Session數(shù)據(jù),但是由于相關(guān)參數(shù)是隱藏的,它也很難獲得Session ID變量值。

(2)對SQL注入漏洞的防范。

黑客進(jìn)行SQL注入手段很多,而且靈活多變,但是SQL注入的共同點(diǎn)就是利用輸入過濾漏洞。因此,要想從根本上防止SQL注入,解決措施就是加強(qiáng)對請求命令尤其是查詢請求命令的過濾。具體來說,包括以下幾點(diǎn):一是把過濾性語句進(jìn)行參數(shù)化處理,也就是通過參數(shù)化語句實(shí)現(xiàn)用戶信息的輸入而不是直接把用戶輸入嵌入到語句中;二是在網(wǎng)站開發(fā)時(shí)盡可能少用解釋性程序,黑客經(jīng)常通過這種手段來執(zhí)行非法命令;三是在網(wǎng)站開發(fā)時(shí)盡可能避免網(wǎng)站出現(xiàn)bug,否則黑客可能利用這些信息來攻擊網(wǎng)站。僅僅通過防御SQL注入還是不夠的,另外還要經(jīng)常使用專業(yè)的漏洞掃描工具對網(wǎng)站進(jìn)行漏洞掃描,如圖3-30所示。

圖3-30 專業(yè)PHP漏洞掃描器PhpScanning(基于C#開發(fā)的免費(fèi)開源軟件)

(3)對腳本執(zhí)行漏洞的防范。

黑客利用腳本執(zhí)行漏洞進(jìn)行攻擊的手段是多種多樣的,而且是靈活多變的,對此,必須采用多種防范方法綜合的手段,才能有效防止黑客對腳本執(zhí)行漏洞進(jìn)行攻擊。這里常用的方法有以下四種;一是對可執(zhí)行文件的路徑進(jìn)行預(yù)先設(shè)定,可以通過safe_moade_exec_dir來實(shí)現(xiàn);二是對命令參數(shù)進(jìn)行處理,一般用escapeshellarg函數(shù)實(shí)現(xiàn);三是用系統(tǒng)自帶的函數(shù)庫來代替外部命令;四是在操作時(shí)盡可能減少使用外部命令。

(4)對全局變量漏洞防范。

對于PHP全局變量的漏洞問題,以前的PHP版本存在這樣的問題,但是隨著PHP版本升級到5.5以后,可以通過對php.ini的設(shè)置來實(shí)現(xiàn),設(shè)置ruquest_order為GPC。另外在php. ini配置文件中,可以通過對magic_quotes_runtime進(jìn)行布爾值設(shè)置是否對外部引入的數(shù)據(jù)中的溢出字符加反斜線。為了確保網(wǎng)站程序在服務(wù)器的任何設(shè)置狀態(tài)下都能運(yùn)行,可以在整個(gè)程序開始時(shí)用get_magic_quotes_runtime檢測設(shè)置狀態(tài),決定是否要手工處理,或者在開始(或不需要自動轉(zhuǎn)義)時(shí)用set_magic_quotes_runtime(0)關(guān)掉。

(5)對文件漏洞的防范。

對于PHP文件漏洞可以通過對服務(wù)器進(jìn)行設(shè)置和配置來達(dá)到防范目的。這里具體的操作如下:一是把PHP代碼中的錯(cuò)誤提示關(guān)閉,這樣可以避免黑客通過錯(cuò)誤提示獲取數(shù)據(jù)庫信息和網(wǎng)頁文件物理路徑;二是對open_basedir進(jìn)行設(shè)置,也就是對目錄外的文件操作進(jìn)行禁止處理,這樣可以對本地文件或者遠(yuǎn)程文件起到保護(hù)作用,防止它們被攻擊,這里還要注意防范Session文件和上載文件的攻擊;三是把safe-made設(shè)置為開啟狀態(tài),從而對將要執(zhí)行的命令進(jìn)行規(guī)范,通過禁止文件上傳,可以有效地提高PHP網(wǎng)站的安全系數(shù)。

3.PHP的常見安全選項(xiàng)

下面的配置選項(xiàng)與安全相關(guān),可以在php.ini文件中設(shè)置,如圖3-31所示。使用這些設(shè)置確保你運(yùn)行的PHP配置默認(rèn)情況下的安全。

圖3-31 php.ini配置文件

(1)open_basedir。

這個(gè)設(shè)置限制任何文件訪問指向一個(gè)特定的目錄,之后的所有文件操作被限制在所指定的位置。執(zhí)行的任何文件操作應(yīng)該在一個(gè)特定的目錄集之內(nèi),這樣一來,標(biāo)準(zhǔn)的“../../../../etc/passwd”變得非常安全。

(2)disable_functions。

這個(gè)設(shè)置可以在PHP中禁用一組函數(shù)。禁用函數(shù)被看作是縱深防御的一個(gè)很好的方式。如果應(yīng)用不使用具有安全風(fēng)險(xiǎn)的函數(shù)如eval( )、 passthru( )、 system( ),那么應(yīng)該始終不允許添加這些函數(shù)。

(3)expose_php。

將這個(gè)配置關(guān)閉將刪除HTTP響應(yīng)中Server首部中顯示的PHP標(biāo)志,作用于隱藏PHP版本或者PHP在應(yīng)用中的運(yùn)行。

(4)display_errors。

允許異常時(shí)向用戶顯示詳細(xì)的錯(cuò)誤信息。在生產(chǎn)環(huán)境中這個(gè)設(shè)置應(yīng)該始終關(guān)閉。

(5)safe_mode。

在PHP中開啟safe_mode允許非常嚴(yán)格的文件訪問權(quán)限。為此要檢查正在運(yùn)行的PHP腳本所有者的權(quán)限,以及腳本試圖進(jìn)行的任何訪問。如果權(quán)限不匹配,PHP拋出一個(gè)安全異常。safe_mode主要由ISP使用,這樣在多宿主環(huán)境中,多個(gè)用戶可以開發(fā)自己的PHP腳本而不會危及服務(wù)器的完整性。

(6)allow_url_fopen。

這個(gè)配置選項(xiàng)將會禁用遠(yuǎn)程文件的操作能力。這是阻止遠(yuǎn)程文件包含漏洞的很好的總體設(shè)置。

下面是一個(gè)示例,如果以下代碼示例中的$absolute_path變量被設(shè)置為http://www.site. com/,設(shè)置allow_url_ fopen能使這一攻擊失效。

include($absolute_path.'inc/adodb/adodb.inc.php');
主站蜘蛛池模板: 荥阳市| 齐齐哈尔市| 威信县| 鹤岗市| 奉化市| 抚宁县| 黔南| 开阳县| 太和县| 军事| 玛沁县| 会同县| 讷河市| 伽师县| 兴文县| 永修县| 山东| 鹤山市| 任丘市| 长汀县| 乐陵市| 鄯善县| 奉贤区| 儋州市| 哈巴河县| 尉氏县| 防城港市| 丰台区| 商都县| 福清市| 北流市| 琼结县| 米泉市| 东乡族自治县| 宜春市| 灵石县| 山西省| 丰宁| 弥渡县| 灯塔市| 鄂托克旗|