動易SiteFactory快報——安全篇
隨著各種病毒、木馬、后門和攻擊手段的層出不窮,網(wǎng)站的安全問題也越來越成為一個令站長和管理員們頭疼的問題。這使得站長們越來越重視系統(tǒng)的安全系數(shù)。而網(wǎng)站系統(tǒng)的開發(fā)人員們,也同樣越來越重視程序的安全性。
動易公司從一開始就高度重視系統(tǒng)的安全性,在程序的開發(fā)中,有大量的時間投入和性能投入都是涉及網(wǎng)站安全的。在SiteFactory 版中,開發(fā)團隊更是充分利用。NET平臺的新特性,采用了大量的新技術(shù)來保障網(wǎng)站安全。這次我們就簡單介紹一下SiteFactory 版在安全性方面所做的努力。
原來2006版所采用的各種安全保障措施,經(jīng)過實踐得到驗證的手段在2007版中全部得到了保留繼承:
- 用戶密碼等關(guān)鍵數(shù)據(jù)采用MD5不可逆加密后保存;
- 后臺啟用驗證碼和認證碼;
- 后臺Admin目錄可以更改目錄名;
- 禁止直接訪問和外部鏈接到后臺頁面;
- Access數(shù)據(jù)庫防下載功能;
- 對上傳文件類型進行檢查,并刪除黑名單中列出類型的文件;
- 對非HTML的表單進行編碼后再存入數(shù)據(jù)庫;
- 對SQL查詢語句中的查詢參數(shù)進行過濾。
這些手段,經(jīng)過長期實踐驗證,確實能夠有效提高網(wǎng)站的安全性,因此在SiteFactory 版中全部得到了保留和改進。網(wǎng)友可能會對MD5加密和驗證碼的作用提出質(zhì)疑,因為“2004年MD5算法已經(jīng)被中國科學家破譯”、“開啟了驗證碼后,網(wǎng)站仍然出現(xiàn)批量注冊的用戶和大量重復(fù)信息、廣告信息”等等。
在這里我們稍加說明:
MD5加密算法在數(shù)據(jù)加密領(lǐng)域得到廣泛應(yīng)用,是一種有效的保存關(guān)鍵信息的有效手段。2004年,中國科學家“破譯”了MD5算法,但這并不意味著你拿到一個經(jīng)過MD5算法加密后的字符串后,能夠逆向得到加密前的字符串。而我們采用MD5保存用戶密碼等數(shù)據(jù)信息,目的只是在于當數(shù)據(jù)庫被別人得到后,不能得到用戶的原始密碼。至于破解,即使在MD5算法沒有被“破譯”的時候,一旦得到了加密結(jié)果,理論上通過暴力破解等手段,也同樣能夠得出密碼。因此采用MD5加密存儲關(guān)鍵信息,在網(wǎng)站管理系統(tǒng)中,仍然是一個有效的安全手段。圖像驗證碼功能已經(jīng)被廣泛應(yīng)用于網(wǎng)站的注冊、登錄、信息發(fā)表等需要防止暴力破解的地方。而且也確實是一個有效的防暴力破解手段(防垃圾信息和重復(fù)信息,依靠驗證碼是不可能徹底杜絕的)。動易首創(chuàng)的后臺登錄認證碼手段,在確保服務(wù)器安全的前提下,徹底斷絕了通過盜取管理員密碼進入后臺的途徑。和其它安全措施相結(jié)合,能夠非常有效地保護網(wǎng)站后臺的權(quán)限不被非法利用。
除了從2006版保留繼承的安全措施以外,2007版又針對安全問題做了非常多的工作,基于。NET的動易SiteFactory 版,安全性比2006版有了極大的提高。
微軟的ASP.NET 2.0平臺和SQL Server 2005針對安全威脅,提供了大量的新特性。而動易SiteFactory 版充分利用了這些新特性,為提高網(wǎng)站的安全系數(shù),采用了大量的手段和措施:
- 采用多層結(jié)構(gòu),避免表現(xiàn)層直接與數(shù)據(jù)層交互,有效提高后端數(shù)據(jù)的安全;
- 使用類型安全的SQL參數(shù)化查詢方式,從根本上解決SQL注入的問題;
- 利用驗證控件,加強表單的客戶端驗證;
- 利用ASP.NET的HttpModule,從整體上限制直接訪問和外部鏈接并判斷是否登錄,避免遺漏;
- URL參數(shù)類型、數(shù)量、范圍限制功能,解決惡意用戶通過地址欄惡意攻擊的問題;
- 全站和管理后臺的IP訪問限定功能,以實現(xiàn)權(quán)限和訪問的最小化原則;
- 網(wǎng)站的配置信息保存在Site.config文件,。config文件是默認拒絕訪問的文件類型,以避免配置信息泄密;
- 對程序集進行混淆加密,避免惡意用戶通過反射利用代碼漏洞進行攻擊;
- 利用web.config中配置的自定義錯誤頁和全局的異常處理,屏蔽異常出現(xiàn)時暴露的敏感信息;
- 對連接字符串進行加密,在配置信息泄密后保護數(shù)據(jù)庫連接的敏感信息。
有興趣的網(wǎng)友可以通過搜索上面列表中的關(guān)鍵詞來了解更多相關(guān)的信息。我們這里就只做一下簡單的介紹:首先是多層結(jié)構(gòu)開發(fā),這個在以往的快報中已經(jīng)介紹過了。為什么采用多層結(jié)構(gòu)能夠提高安全性呢?簡單來說,網(wǎng)站的訪問者在訪問網(wǎng)站時,僅僅是與表現(xiàn)層交互,而表現(xiàn)層的界面呈現(xiàn),是由業(yè)務(wù)邏輯層來完成,業(yè)務(wù)邏輯層和數(shù)據(jù)層之間,使用各種實體來進行數(shù)據(jù)的交流。只有數(shù)據(jù)層才直接對數(shù)據(jù)庫進行操作。通過表現(xiàn)層提交的各種表單,首先要經(jīng)過動易系統(tǒng)的過濾,成為業(yè)務(wù)層可用的參數(shù)。而這些參數(shù)又要轉(zhuǎn)換成各個實體的屬性,數(shù)據(jù)層還要將這些實體和屬性轉(zhuǎn)換成查詢參數(shù)后,才用與數(shù)據(jù)查詢。這樣就最大程度地防止了SQL注入類的攻擊(。NET環(huán)境下的各種編程語言都要求強類型變量,也就意味者像整數(shù)型的查詢參數(shù),如果傳送一個非整數(shù)型的參數(shù),是絕對不能通過的)。而在動易SiteFactory 的數(shù)據(jù)層,完全采用帶有參數(shù)的結(jié)構(gòu)化查詢,從根本上解決了SQL注入問題。
其次,ASP.NET的表單處理方式,在服務(wù)器端編程絕大部分時候采用的是讀取服務(wù)器控件屬性而非GET方式提交的表單值(提取過程是由。NET來轉(zhuǎn)換實現(xiàn)),使得偽造表單數(shù)據(jù)攻擊比ASP環(huán)境下要困難得多。動易SiteFactory 在ASP.NET自身提供的強大驗證控件的基礎(chǔ)上加以繼承和發(fā)展,開發(fā)出了更多、更強大的驗證控件。可以在客戶端、服務(wù)器端對表單提交的數(shù)據(jù)合法性進行更嚴格的驗證。
另外,除了禁止直接輸入地址訪問關(guān)鍵頁面外,動易SiteFactory 還對URL參數(shù)的類型、范圍等做出了嚴格限制和過濾,更基于ASP.NET的HttpModule,整體限制對指定范圍內(nèi)的路徑進行直接訪問和外部鏈接,有效防范跨站腳本攻擊。結(jié)合超前強大的權(quán)限分配和IP限制,站長完全可以確保非指定人員絕對不能越權(quán)訪問后臺相關(guān)功能。
除了這些以外,動易SiteFactory 開發(fā)團隊還在繼續(xù)研究和實踐更多的安全措施。最終的發(fā)布版本將會更加安全:
- 尚未最后完成的增強版日志記錄。詳細跟蹤記錄用戶操作異常和部分系統(tǒng)異常,讓站長和安全人員能通過日志分析系統(tǒng)可能存在的漏洞和bug,有針對性地進行防范和完善。
- 開發(fā)團隊仍在繼續(xù)努力,雖然對跨站腳本攻擊,采取了一些措施進行限制,但還未從根本上解決,動易開發(fā)團隊的目標是力爭徹底解決。
- 計劃利用密碼強度限制,排除存在弱密碼的可能性。很多時候網(wǎng)站的密碼被盜取,往往是由于密碼不夠復(fù)雜,容易被暴力破解造成的。除了在防暴力破解方面采取措施外,設(shè)置強密碼才是關(guān)鍵。動易CMS 2007開發(fā)團隊計劃在密碼強度限制方面為站長提供更安全的限制手段。
- 開發(fā)團隊正在研究使用SSL來加密數(shù)據(jù)傳輸;SSL加密是很多安全性要求高的網(wǎng)站(例如網(wǎng)上銀行、在線交易等)廣泛采用的手段。一旦普通網(wǎng)站能夠得到該技術(shù)支持,針對高級入侵和數(shù)據(jù)偽造、數(shù)據(jù)挾持等手段的安全系數(shù)也會得到極大提升。
這次的快報,我們用很大的篇幅來介紹了動易SiteFactory 版在安全方面所做的改進,安全防范是一個復(fù)雜的、涉及面極廣的負責工程,所以快報中的介紹也只能是簡單概述,但是可以明確的是:動易SiteFactory 版絕對是一個在安全方面空前強大的系統(tǒng)。也證明了動易公司和動易開發(fā)團隊對于網(wǎng)站安全的重視程度和所做出的不懈努力。
用戶登錄
還沒有賬號?
立即注冊