1. 程式人生 > >OWASP Top 10(2013) 第三篇 之 A6

OWASP Top 10(2013) 第三篇 之 A6

OWSAP

A6 – 敏感資訊洩露

Web應用程式一般是搭載在Web伺服器,使用Web瀏覽器通過Internet可以進行遠端訪問,訪問過程中的資料跨越信任邊界,一旦保護不當就會被竊取,特別是敏感資料一旦被攻擊者獲取,就可以利用他們進行網路詐騙,身份仿冒,獲取他人財富,或進行其他損害操作,對個人或企業使用者帶來不可估量的損失,因此在Web應用程式開發過程中,對敏感資料的保護顯得尤其重要。

近年來因資料保護不當造成洩密的案例層出不群,如CSDN後臺資料庫被竊取,更不可思議的是該網站的使用者密碼竟然是明文儲存的,某郵箱也發生過類似案例,大批使用者資訊洩露,更為可怕的是,很多人很多平臺的使用者名稱和密碼是一致的,對攻擊者來說獲取CDSN或郵箱賬戶就等於獲取了支付寶等平臺的資訊,那麼對萬千使用者來說,個人財產就存在了風險。

因此我們在設計和開發軟體的時候,要識別出敏感資料,並對敏感資料進行安全的保管和傳輸,下面就詳細說說什麼是敏感資料,如何進行敏感資料保護。

敏感資料,在我看來,有如下幾個方面:

1、個人資訊,如姓名,身份證ID,電話號碼,銀行賬戶,駕駛證號碼,社保卡號,護照號碼等都是敏感資料;

2、網站登入的使用者名稱、密碼,SSL證書,會話ID,加密使用的金鑰等都屬於敏感資訊,這些資訊一旦洩露,攻擊者就可以以合法使用者的身份訪問Web系統,隨意進行各種攻擊操作;

3、Web伺服器的OS型別,版本資訊,Web容器的名稱,版本號,資料庫型別,版本號,應用軟體使用開源軟體資訊都屬於敏感資訊,因為攻擊者知道這些軟體資訊,就會利用這些軟體存在的公開漏洞進行專門攻擊,提升了系統被攻破的可能性。

那麼,我們如何保護敏感資訊呢?我覺得應該至少做到如下幾點:

1、針對個人資料,必須加密儲存,且要使用安全的加密演算法,具體可以這麼區分,針對本地儲存且需要密文明文轉換的使用AES128及以上的安全加密演算法,對於使用於認證場景的不需要可逆的可以採用SHA256及以上的安全HASH演算法,如PBKDF2等,需要加鹽值(採用安全隨機數,防止彩虹表攻擊),而對於誇信任網路傳輸的敏感資料,需要使用非對稱加密演算法,公鑰加密,私鑰解密,如RSA2048及以上演算法,特別強調,常見的MD5、DES,SHA1,甚至不能算假面的BSAE64位編碼都是不安全的做法,針對加解密這塊,大家看不明白也沒關係,後續做專題來講解吧,到時候會附上Java的實現。

2、針對敏感資料傳輸,需要採用SSL加密通道,每一個請求都應該使用SSL加密通道,因為每個請求裡面都帶有會話ID,會話ID就是敏感資訊,所以並不是只有涉及認證的請求才存在敏感資料,針對SSL通道,需要使用安全的TSL版本如TSL1.1和TSL1.2,其餘SSL版本和TSL1.0已經被證明是不安全的。同時要使用安全的加密套件,也就是說SSL協商過程中協商的通道加密演算法也要是安全的,否則加密資料還是可以被輕易破解,具體配置是在Web容器裡面的,大家可以百度輕易獲取,後續針對Web容器加固方面也會進行說明。

3、應用程式執行出錯容易造成敏感資訊的洩露,如有的網站的程式堆疊資訊直接顯示在頁面上,暴露Web容器的名稱和版本資訊,這些都是不安全的做法,解決方法就是定製統一出錯頁面,杜絕顯示此類敏感資訊到Web客戶端。

4、敏感資訊禁止明文傳遞到Web客戶端,能不傳遞就不要傳遞,禁止將敏感資訊列印到堆疊或者日誌中,禁止明文儲存在檔案或資料庫中,同時儲存敏感資訊的檔案要嚴格控制訪問許可權。

好吧,就說這些吧,歡迎大家拍磚~