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