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