董文博 宛曉霞
【摘 要】網(wǎng)站應(yīng)用愈發(fā)廣泛,為了降低網(wǎng)站入侵風(fēng)險本文針對網(wǎng)站存在的隱患,作者結(jié)合實際工作經(jīng)驗提出了以下的解決方案。本文從網(wǎng)站安全的重要性及必要性入手,對數(shù)據(jù)庫創(chuàng)建、代碼編寫、網(wǎng)站部署等方面進(jìn)行探索研究,對可能產(chǎn)生的網(wǎng)站安全隱患逐一進(jìn)行分析,根據(jù)實際工作中的經(jīng)驗,分別針對分析的安全隱患來源提出了建議和解決辦法。
【關(guān)鍵詞】網(wǎng)站安全 SQL 漏洞 數(shù)據(jù)庫 注入攻擊
1提高網(wǎng)站安全的重要性及必要性
隨著信息化的發(fā)展,網(wǎng)站的安全性也越發(fā)重要,如果網(wǎng)站的安全隱患被入侵者利用,將可能造成損壞企業(yè)形象,丟失重要數(shù)據(jù)信息,甚至服務(wù)器被控制等等問題,對企業(yè)造成不可估量的損失。
2 網(wǎng)站安全性的主要隱患
從網(wǎng)站的創(chuàng)建到應(yīng)用分析,網(wǎng)站安全隱患主要來自以下幾個方面:
2.1網(wǎng)站數(shù)據(jù)庫的安全隱患
目前很多網(wǎng)站采用免費開源代碼,且未對原網(wǎng)站源碼進(jìn)行調(diào)整,數(shù)據(jù)庫位置存在可被猜解的隱患。網(wǎng)站數(shù)據(jù)庫位置和數(shù)據(jù)庫名稱被入侵者獲悉后,入侵者可能會利用第三方軟件對數(shù)據(jù)庫下載。如果數(shù)據(jù)庫沒有進(jìn)行加密,一旦被獲取,將致使重要數(shù)據(jù)被非法獲取。入侵者可以根據(jù)獲取的信息進(jìn)一步破壞攻擊網(wǎng)站,甚至控制網(wǎng)站所在的服務(wù)器。
2.2網(wǎng)站源代碼的安全隱患
在代碼設(shè)計過程中,由于考慮不周等原因,網(wǎng)站本身可能存在一些漏洞,如果這些漏洞被入侵者利用,則可能造成網(wǎng)站源代碼或者數(shù)據(jù)庫信息的泄露。比如:
(1)按瀏覽器的約定,同一域名的cookie可以被讀寫,而cookie只是瀏覽器的,對通信協(xié)議沒有影響,因此,通過很多手段進(jìn)行cookies欺騙。而利用cookie漏洞,入侵者可以獲取其他權(quán)限的用戶訪問網(wǎng)站數(shù)據(jù),對網(wǎng)站的安全性造成影響。
(2)網(wǎng)站中存在SQL注入攻擊的漏洞。如果網(wǎng)站中未對sql中的特殊字符進(jìn)行過濾,利用特殊語句可以實現(xiàn)對數(shù)據(jù)庫的注入攻擊。如在某個驗證頁面中將變量更改為:a or‘1=1時,將會使原有的SQL語句發(fā)生變化,從而實現(xiàn)SQL的注入攻擊。
2.3網(wǎng)站服務(wù)器的安全隱患
服務(wù)器為網(wǎng)站的運行提供了可用的服務(wù),同時也將網(wǎng)站數(shù)據(jù)、源碼部署于服務(wù)器中,因此服務(wù)器的安全性對于網(wǎng)站的安全是至關(guān)重要的。如果服務(wù)器中存在的安全隱患被入侵者利用,那么將會造成存儲在該服務(wù)器中的所有網(wǎng)站信息、數(shù)據(jù)信息的安全問題。服務(wù)器中的安全隱患主要來自于過大的用戶訪問權(quán)限,服務(wù)器中端口、服務(wù)漏洞以及服務(wù)器中存在的系統(tǒng)漏洞等。
3 提高網(wǎng)站安全性
3.1數(shù)據(jù)庫的安全性
3.1.1增加數(shù)據(jù)庫的隱蔽性
數(shù)據(jù)庫的存儲位置盡量選用非常規(guī)的存儲位置,可以將數(shù)據(jù)庫的擴(kuò)展名用asp、asa、等具有迷惑性的格式命名,這樣將能有效的阻止通過猜解獲取數(shù)據(jù)庫存儲位置的入侵者的攻擊。
3.1.2降低數(shù)據(jù)庫被下載隱患
(1)數(shù)據(jù)庫文件的名稱盡量用復(fù)雜的名稱。在數(shù)據(jù)庫名中增加“%”等特殊字符,采用這樣的名稱,在數(shù)據(jù)庫被下載過程的特殊符號將被解析為具有特殊意義的字符,從而使得入侵者無法下載數(shù)據(jù)庫文件。
(2)數(shù)據(jù)庫名稱擴(kuò)展名改為.asp,.asa,并在數(shù)據(jù)庫中添加二進(jìn)制文件。這樣做的作用就是:當(dāng)服務(wù)器按照ASP語法解析時,會報告500錯誤,則能預(yù)防數(shù)據(jù)庫下載。
(3)數(shù)據(jù)庫名稱前加#,然后修改數(shù)據(jù)庫連接文件(如conn.asp)中的數(shù)據(jù)庫地址。如果入侵者獲取了數(shù)據(jù)庫存放位置,進(jìn)而下載數(shù)據(jù)時,將只能識別#號前面的部分,對于后面的自動去掉。另外,在數(shù)據(jù)庫文件名中保留一些空格也能起到類似作用。
(4)對存入數(shù)據(jù)庫的重要信息進(jìn)行加密。
(5)使用ODBC數(shù)據(jù)源。如DBPath = Server.MapPath("../123/ abc/asfadf.mdb ") conn.open "driver={Microsoft Access Drivernb sp(*.mdb)}dbq=" DBPath 。如果ASP源代碼失密后,數(shù)據(jù)庫地址和名稱也會被入侵者獲取,從而下載數(shù)據(jù)庫文件。如果使用ODBC數(shù)據(jù)源,在代碼中顯示為conn.open "ODBC-DSN名",這樣即使源代碼被獲取,也無法獲取數(shù)據(jù)庫文件的地址和名稱。但這樣做引起的問題是如果目錄移動的話,則需要重新設(shè)置數(shù)據(jù)源。
對存儲重要數(shù)據(jù)信息的數(shù)據(jù)庫加密,即使數(shù)據(jù)庫被下載也有一定的安全性,下載的數(shù)據(jù)庫中的數(shù)據(jù)信息并非直接可用。這將在一定程度上增加破解難度,從而提高數(shù)據(jù)庫信息的安全。對數(shù)據(jù)庫加密后,要在ASP程序中使用,就需要在ASP程序中的connection對象的open方法中增加pwd的參數(shù)。
3.2網(wǎng)站源碼的安全性
3.2.1預(yù)防cookie欺騙
Cookie欺騙的主要手段有:通過瀏覽器直接對通信數(shù)據(jù)改寫、修改瀏覽器使其能從本地讀寫任意域名的cookie、使用簽名腳本實現(xiàn)對其他域名的cookie的讀寫以及欺騙瀏覽器以獲取其他域名等多種方式。
針對cookie欺騙產(chǎn)生的安全隱患,可以通過對而cookie過濾和cookie過期等方法實現(xiàn)。比如Resonse.cookies(“CookieName”).Expires=dateadd(“s”,90,now()),該代碼實現(xiàn)了對cookie做90秒過期處理。
3.2.2預(yù)防Sql注入
網(wǎng)站中存在的SQL注入漏洞主要來自于get、post和cookie,因此對這三者進(jìn)行非法字符的過濾即可(代碼略)。
3.3服務(wù)器的安全性
(1)根據(jù)服務(wù)器的應(yīng)用情況,設(shè)置適當(dāng)?shù)挠脩魴?quán)限,符合最小授權(quán)的原則。
(2)關(guān)閉多余端口、服務(wù),配置服務(wù)器的安全策略??梢杂胣et use關(guān)閉、刪除系統(tǒng)默認(rèn)的共享及IPC$。netstat –an命令查看計算機(jī)端口開放情況,并根據(jù)服務(wù)器中提供的應(yīng)用服務(wù)情況關(guān)閉多余端口以及服務(wù)。gpedit.msc配置組策略。
(3)及時更新操作系統(tǒng)、IIS、tomcat、SQL的補(bǔ)丁程序,減少已知風(fēng)險漏洞;加強(qiáng)對服務(wù)器的監(jiān)控,定期分析系統(tǒng)日志、徹查異常事件,以增強(qiáng)服務(wù)器的安全系數(shù),減少安全隱患。
計算機(jī)的技術(shù)在不斷的發(fā)展變化,網(wǎng)站的安全性也隨時在經(jīng)受入侵者的考驗。謹(jǐn)以此文為大家提供一些啟示和建議,拋磚引玉,望讀者不吝指正。