網(wǎng)站建設(shè)的安全問題分析
新疆二域設(shè)計(jì)提醒客戶在建設(shè)網(wǎng)站和使用網(wǎng)站一定要注意考慮網(wǎng)站的安全性的問題。
網(wǎng)站的安全主要包括物理的安全和網(wǎng)站運(yùn)行支撐軟件本身的安全。
物理安全是指系統(tǒng)機(jī)器及其外設(shè)不遭受各種物理破壞,如被盜、遭火災(zāi)、水災(zāi)等;支撐軟件本身的安全是指網(wǎng)絡(luò)操作系統(tǒng)、web服務(wù)器系統(tǒng)及數(shù)據(jù)庫系統(tǒng)本身的安全,此類安全用戶是無能為力的,只有及時(shí)安裝廠家發(fā)布的安全補(bǔ)丁程序。
其二,對(duì)于網(wǎng)站程序自身的安全,應(yīng)該從以下幾個(gè)方面考慮。
(1)不信任原則
對(duì)網(wǎng)站程序來講,訪問網(wǎng)站的用戶都是不被信任的,他們當(dāng)中就隱藏著攻擊者。所有用戶的輸入都應(yīng)該檢查。合法的輸入才可以進(jìn)入流程,這樣就可以最大限度的保證程序的安全。
(2)輸入檢查原則
從目前的網(wǎng)站程序來看,用戶的輸入分為文本型和二進(jìn)制型。對(duì)于文本型輸入,如果要進(jìn)行檢查,就得根據(jù)字段本身的性質(zhì)進(jìn)行,如郵編必須限制為六位數(shù)字,身份證號(hào)碼必須符合身份證號(hào)碼的編碼規(guī)則等。
需要說明的是,為了進(jìn)一步提高網(wǎng)站的安全性,應(yīng)該采用前后數(shù)據(jù)檢查相結(jié)合的方法來完成程序?qū)斎霐?shù)據(jù)的檢查,避免用以前采用的只在前臺(tái)通過客戶端腳本完成數(shù)據(jù)檢查的做法,因?yàn)樵瓉淼淖龇ü粽吆腿菀桌@過檢查程序 ,如SQL注入攻擊等。
(3)用戶最小權(quán)限原則
訪問網(wǎng)站的用戶有什么樣的權(quán)限,要根據(jù)網(wǎng)站的性質(zhì)和需要客戶做什么來決定,但是有一個(gè)基本的原則,就是服務(wù)器的安全性。對(duì)于訪問網(wǎng)站的用戶,盡量規(guī)范他們可以輸入的內(nèi)容,限制并過濾輸入的非法信息,尤其是要嚴(yán)禁上傳非法文件。
(4)程序運(yùn)行最小權(quán)限原則
網(wǎng)頁有靜態(tài)與動(dòng)態(tài)之分,對(duì)于沒有服務(wù)器端程序的頁面應(yīng)該保存為靜態(tài)頁面,這樣可以減少程序的執(zhí)行時(shí)間,有利于提高服務(wù)器效率。同時(shí)可以保證程序的安全性。
網(wǎng)站程序跟服務(wù)器應(yīng)當(dāng)盡可能的減少耦合,杜絕網(wǎng)站中使用絕對(duì)路勁等情況。另外,對(duì)于目錄的權(quán)限也應(yīng)該做出規(guī)定,比如存放上傳文件的目錄,在絕大多數(shù)情況下式不應(yīng)該有執(zhí)行權(quán)限的。
(5)組件安全性原則
要使用網(wǎng)站功能強(qiáng)大,必然要使用組件,組件在帶來強(qiáng)大的功能的同時(shí)也帶來了安全隱患。對(duì)于內(nèi)置組件的使用,應(yīng)當(dāng)有明確的使用范圍;對(duì)于自己注冊(cè)的組件,必須認(rèn)真考慮組件的效率和是否有溢出漏洞。
(6)程序錯(cuò)誤處理原則
從嚴(yán)格意義上講,測試是不可能發(fā)現(xiàn)所有問題的。在設(shè)計(jì)階段,出錯(cuò)設(shè)計(jì)就是保證程序安全性的一個(gè)重要環(huán)節(jié)。如果一個(gè)程序能處理所有錯(cuò)誤,那么它就有非常高的安全性。
在技術(shù)層面如何提高網(wǎng)站的安全性?
使用安全的數(shù)據(jù)庫技術(shù)
目前主流的數(shù)據(jù)庫技術(shù)包括 MS SQL Server, Oracle, IBM DB2, MySQL, PostgreSQL,其中 MySQL 和 PostgreSQL 屬于開源數(shù)據(jù)庫,其它三種數(shù)據(jù)庫根據(jù)不同許可方式有不同的價(jià)格??紤]到安全,它們都是非常安全的數(shù)據(jù)庫技術(shù),需要注意的是,我們并不建議采用 Access,首先 Access 是一種桌面數(shù)據(jù)庫,并不適合可能面臨海量訪問的企業(yè)網(wǎng)站,其次,Access 是一種非常不安全的網(wǎng)站數(shù)據(jù)庫,如果您的 Access 數(shù)據(jù)庫文件的路徑被獲取,人們很容易將這個(gè)數(shù)據(jù)庫文件下載下來并看到數(shù)據(jù)庫內(nèi)的一切內(nèi)容,包括需要授權(quán)才能看到的內(nèi)容。如果您選擇 Access 的原因是因?yàn)樗赓M(fèi),您需要知道 MSDE 也是免費(fèi)的。
用戶密碼或其它機(jī)密數(shù)據(jù)必須用成熟加密技術(shù)加密后再存放到數(shù)據(jù)庫
使用明文在數(shù)據(jù)庫中存儲(chǔ)用戶密碼,信用卡號(hào)等數(shù)據(jù)是非常危險(xiǎn)的,即使您使用的是非常安全的數(shù)據(jù)庫技術(shù),仍然要非常謹(jǐn)慎,任何機(jī)密數(shù)據(jù)都應(yīng)該加密存儲(chǔ),這樣即使您的數(shù)據(jù)庫被攻破,那些重要的機(jī)密數(shù)據(jù)仍然是安全的。我們使用MD5、DES等較為成熟的數(shù)據(jù)加密技術(shù)來對(duì)密碼、信用卡賬號(hào)等涉及私人信息的數(shù)據(jù)進(jìn)行合理加密。
密碼或其它機(jī)密數(shù)據(jù)必須用成熟加密技術(shù)加密后才能通過表單傳遞
如果您的網(wǎng)站沒有使用 HTTPS 加密技術(shù),那您的網(wǎng)站服務(wù)器和訪問客戶之間的所有數(shù)據(jù)都是以明文傳輸?shù)?,這些數(shù)據(jù)很容易在交換機(jī)和路由器節(jié)點(diǎn)的位置被截獲,如果您無法部署 HTTPS,將所有機(jī)密數(shù)據(jù)加密后再通過網(wǎng)絡(luò)傳播是非常有效的辦法
密碼或其它機(jī)密數(shù)據(jù)必須用成熟加密技術(shù)加密后才能寫入 Cookie
很多網(wǎng)站將用戶帳戶信息寫到 Cookie 中,以便用戶下次訪問時(shí)可以直接登陸。如果用戶帳戶信息未經(jīng)加密直接寫到 Cookie 中,這些數(shù)據(jù)很容易通過查看 Cookie 文件獲得,尤其當(dāng)您的用戶是和別人共用電腦的時(shí)候。
防止SQL注入
我們存儲(chǔ)過程來而不是sql語句拼接來相應(yīng)用戶的查詢,存儲(chǔ)過程將每個(gè)輸入的參數(shù)認(rèn)作字符串來進(jìn)行傳遞,另外我們?cè)陧撁嬷袑⒁恍┪kU(xiǎn)字符過濾掉,有效的避免sql注入的危害。
防止JavaScript注入
如果網(wǎng)站中存在用戶的提交文字輸入的功能,則很網(wǎng)站很可能收到JavaScript注入的風(fēng)險(xiǎn),即用戶如果沒有提交正確的文字內(nèi)容而提交了一段JavaScript代碼進(jìn)入數(shù)據(jù)庫,當(dāng)頁面再次顯示用戶提交的這些內(nèi)容時(shí),這些代碼很可能會(huì)產(chǎn)生危機(jī)瀏覽用戶的惡意程序。我們?cè)跈z測用戶的文字內(nèi)容提交的時(shí)候?qū)?huì)檢測JavaScript代碼的必備字段從而將其過濾,對(duì)于危險(xiǎn)字符也會(huì)將其替換或者過濾。
對(duì)于不恰當(dāng)言論的處理
如果用戶的輸入中存在有關(guān)政治方面的不恰當(dāng)言論,那么將會(huì)給其他瀏覽者帶來誤導(dǎo)對(duì)網(wǎng)站產(chǎn)生很大影響。然而在用戶提交這些言論時(shí)檢測其中的詞語,如果發(fā)現(xiàn)這些不恰當(dāng)言論則不予以提交或者用符號(hào)代替,能有效得避免這種危害。我們?cè)诜乐@種危害上面可以由管理員自行設(shè)置這些被禁掉的詞語。
網(wǎng)站必須有安全備份和恢復(fù)機(jī)制
任何網(wǎng)站都可能發(fā)生硬件或軟件災(zāi)難,導(dǎo)致您的網(wǎng)站丟失數(shù)據(jù),您必須根據(jù)您網(wǎng)站的規(guī)模和更新周期,定期對(duì)網(wǎng)站進(jìn)行安全備份,在災(zāi)難性事故發(fā)生以后,您的備份恢復(fù)機(jī)制需要在很短的時(shí)間內(nèi)將整個(gè)網(wǎng)站恢復(fù)。需要注意的是,您一定要對(duì)您的備份恢復(fù)機(jī)制進(jìn)行測試,保證您的備份數(shù)據(jù)是正確的。
網(wǎng)站的錯(cuò)誤信息必須經(jīng)過處理后再輸出
錯(cuò)誤消息常常包含非常可怕的技術(shù)細(xì)節(jié),幫助黑客攻破您的網(wǎng)站,您應(yīng)當(dāng)對(duì)網(wǎng)站底層程序的錯(cuò)誤消息進(jìn)行處理,防止那些調(diào)試信息,技術(shù)細(xì)節(jié)暴露給普通訪問者。
下一篇:網(wǎng)站有流量沒有訂單的原因