大型網站技術架構(八)–網站的安全架構

 

大型網站技術架構(一)–大型網站架構演化

大型網站技術架構(二)–架構模式

大型網站技術架構(三)–架構核心要素

大型網站技術架構(四)–網站的高效能架構

大型網站技術架構(五)–網站高可用架構

大型網站技術架構(六)–網站的伸縮性架構

大型網站技術架構(七)–網站的可擴充套件性架構

 

 

      從網際網路誕生起,安全威脅就一直伴隨著網站的發展,各種Web攻擊和資訊洩露也從未停止。常見的攻擊手段有XSS攻擊、SQL隱碼攻擊、CSRF、Session劫持等。

1、XSS攻擊

 XSS攻擊即跨站點指令碼攻擊(Cross Site Script),指黑客通過篡改網頁,注入惡意HTML指令碼,在使用者訪問網頁時,控制使用者瀏覽器進行惡意操作的一種攻擊方式。

常見的XSS攻擊型別有兩種,一種是反射型,攻擊者誘使使用者點選一個嵌入惡意指令碼的連結,達到攻擊的目的,如下圖所示:

 

 

另一種XSS攻擊是持久型XSS攻擊,黑客提交含有惡意指令碼的請求,儲存在被攻擊的Web站點的資料庫中,使用者瀏覽網頁時,惡意指令碼被包含在正常頁面中,達到攻擊的目的,如下圖所示:

 

消毒

對某些html字元轉義,如“>”轉義為“&gt”等。

HttpOnly

即瀏覽器禁止頁面javascript訪問帶有HttpOnly屬性的Cookie。可通過對Cookie新增HttpOnly屬性,避免被攻擊者利用Cookie獲取使用者資訊。

2、注入攻擊

注入攻擊主要有兩種形式,SQL隱碼攻擊和OS注入攻擊。SQL隱碼攻擊的原理如下圖所示。攻擊者在HTTP請求中注入惡意的SQL命令,伺服器用請求構造資料庫SQL命令時,惡意SQL被一起構造,並在資料庫中執行。

 

除了SQL隱碼攻擊,攻擊者還根據具體應用,注入OS命令、程式語言程式碼等達到攻擊目的。

 

消毒

和防XSS攻擊一樣,過濾請求資料中可能注入的SQL,如”drop table”等。另外還可以利用引數繫結來防止SQL隱碼攻擊。

3、CSRF攻擊

CSRF即Cross Site Request Forgery 跨站點請求偽造,攻擊者通過跨站點請求,以合法使用者的身份進行非法操作。CSRF的主要手段是利用跨站請求,在使用者不知情的情況下,以使用者的身份偽造請求。其核心是利用了瀏覽器Cookie或伺服器Session策略,盜取使用者身份

 

表單Toke

       CSRF是一個偽造使用者請求的操作,所以需要構造使用者請求的所有引數才可以,表單Token通過在請求引數中增加隨機數的辦法來組織攻擊者獲取所有請求引數。

驗證碼

       更加簡單高效,即請求提交時,需要使用者輸入驗證碼,以避免在使用者不知情的情況下被攻擊者偽造請求。

Referer Check

       HTTP請求頭的Referer域中記錄著請求來源,可通過檢查請求來源,驗證其是否合法,還可以利用這個功能來實現突破防盜鏈。

4、WEB應用防火牆

        ModSecurity是一個開源的Web應用防火牆,探測攻擊並保護Web應用程式,既可以嵌入到Web應用伺服器中,也可以作為一個獨立的應用程式啟動。ModSecurity最早只是Apache的一個模組,現在已經有JAVA、NET多個版本,並支援Nginx。

        ModSecurity採用處理邏輯與攻擊規則集合分離的架構模式。處理邏輯(執行引擎)負載請求和相應的攔截過濾,規則載入執行等功能。而攻擊規則集合則負責描述對具體攻擊的規則定義、模式識別、防禦策略等功能。處理邏輯比較穩定,規則集合需要不斷針對漏洞進行升級,這是一種可擴充套件的架構設計。

 

 

5、資訊加密技術

為了保護網站的敏感資料,應用需要對某些資料進行加密處理,資訊加密技術科分為三類:單向雜湊加密、對稱加密和非對稱加密

5.1單向雜湊加密

單向雜湊加密是指通過對不同輸入長度的資訊進行雜湊計算,得到固定長度的輸出,這個雜湊計算過程是單向的,如下圖所示。

 

單向雜湊加密一般主要用途是使用者密碼的加密,使密碼不可逆的儲存到資料庫中,即便資料庫資訊洩露,攻擊者也無法知曉原密碼是什麼。

常見的單向雜湊演算法有MD5、SHA等。

5.2對稱加密

即加密和解密都使用同一個金鑰,如下圖所示:

 

常用的對稱加密演算法有DES演算法、RC演算法等。對稱加密是一種傳統的加密手段,也是最常用的加密手段,適用於大多數場合。

 

5.3非對稱加密

非對稱加密使用的加密和解密不是同一金鑰,其中一個對外界公開,被成為公鑰,另一個只有所有者知道,被稱作私鑰。用公鑰加密的資訊必須用私鑰才能解開,反正,用私鑰加密的資訊只有用公鑰才能解開,如下圖所示:

 

非對稱加密常用演算法有RSA等。HTTPS傳輸中瀏覽器使用的數字證書實質上是經過權威機構認證的非對稱加密的公鑰