1. 程式人生 > >軟件架構設計學習總結(14):大型網站技術架構(八)網站的安全架構

軟件架構設計學習總結(14):大型網站技術架構(八)網站的安全架構

根據 知情 提交 pac 請求參數 用途 text 避免 信息加密

從互聯網誕生起,安全威脅就一直伴隨著網站的發展,各種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傳輸中瀏覽器使用的數字證書實質上是經過權威機構認證的非對稱加密的公鑰

軟件架構設計學習總結(14):大型網站技術架構(八)網站的安全架構