應(yīng)用系統(tǒng)設(shè)計之安全性原則
由于銀行應(yīng)用系統(tǒng)中涉及資金、客戶信息等重要、敏感的數(shù)據(jù),應(yīng)用系統(tǒng)始終面臨著外部和內(nèi)部攻擊的威脅,為此需要采取有效的手段確保應(yīng)用系統(tǒng)安全。
一、訪問控制安全
(一)“嚴禁”原則
嚴禁使用明文或在程序/腳本文件中寫死密碼,應(yīng)用系統(tǒng)中涉及的任何密碼,均嚴禁使用明文,并嚴禁將密碼寫在代碼/腳本文件中。嚴禁在網(wǎng)頁源碼中暴露應(yīng)用處理邏輯,嚴禁在網(wǎng)頁源代碼中出現(xiàn)類似SQL、腳本、條件判斷等應(yīng)用處理邏輯。
嚴禁在超鏈接中出現(xiàn)參數(shù)信息,嚴禁基于Web的應(yīng)用將數(shù)據(jù)庫連接用戶、密碼等重要參數(shù)信息放在超鏈接中,超鏈接中參數(shù)信息、服務(wù)調(diào)用信息應(yīng)進行變形(亂碼)或者隱藏,以防止SQL注入攻擊,避免黑客猜測數(shù)據(jù)庫表結(jié)構(gòu)、數(shù)據(jù)庫連接用戶和密碼。嚴禁應(yīng)用系統(tǒng)設(shè)計留有“后門”,嚴禁以維護、技術(shù)支持或者特殊操作為由,設(shè)計違反或者繞過安全規(guī)則的任何類型的入口和設(shè)計文檔中未說明的任何模式的隱藏入口。
(二)必須原則
身份識別是信息安全服務(wù)的基礎(chǔ),基本原則是要做到用戶區(qū)分的唯一性,認證是基于身份識別的,身份識別最常見的形式就是用戶ID,與密碼組合標(biāo)識一個用戶身份。
密碼分為交易密碼和用戶登錄密碼等。應(yīng)用系統(tǒng)應(yīng)對交易密碼的全部使用環(huán)節(jié)進行硬加密,包括密碼的產(chǎn)生、密碼錄入、密碼修改、密碼的傳輸、密碼的保存。應(yīng)用系統(tǒng)應(yīng)支持聯(lián)機密鑰修改,避免加密設(shè)備密鑰變更對應(yīng)用系統(tǒng)正常運行的影響。
應(yīng)用系統(tǒng)應(yīng)對系統(tǒng)的使用用戶密碼進行加密(可以是軟加密),包括密碼的產(chǎn)生、密碼錄入、密碼修改、密碼的傳輸、密碼的保存。軟加密時應(yīng)確保軟加密算法具有足夠的強度,并且確保密鑰存儲安全,對密鑰的訪問應(yīng)嚴格控制。同時,還應(yīng)采取必要的措施,確保軟加密算法的安全。
必須保證密碼安全傳遞,應(yīng)用系統(tǒng)應(yīng)建立完善的密碼傳遞機制,如采用硬件轉(zhuǎn)加密、密碼信封等方式,確保密碼在系統(tǒng)和使用用戶(人)之間的安全傳遞。
應(yīng)用系統(tǒng)必須設(shè)計密碼強度檢查機制,密碼錯誤次數(shù)限制等措施,避免用戶使用簡單密碼,防止黑客對密碼進行暴力破解。,必須提供用戶賬戶鎖定功能,當(dāng)用戶帳戶幾次登錄嘗試失敗后,必須禁用該帳戶并將事件寫入日志。同時必須提供用戶帳戶解鎖功能。必須在設(shè)計階段將這些策略明確下來。
必須支持密碼有效期,密碼不應(yīng)固定不變。作為常規(guī)密碼維護的一部分,通過設(shè)置密碼有效期強制應(yīng)用系統(tǒng)用戶對密碼進行定期更改。在應(yīng)用程序設(shè)計階段,必須考慮提供這種類型的功能。,必須對前端輸入信息進行驗證
將輸入驗證策略作為應(yīng)用程序設(shè)計的核心要素。應(yīng)假定所有的輸入都是惡意的,不要依賴于客戶端的驗證,雖然使用客戶端驗證可以減少客戶端和服務(wù)器之間的信息傳遞次數(shù)。
要做到限制、拒絕或者凈化輸入,輸入驗證的首選方法是從開始就限制允許輸入的內(nèi)容。按照已知的有效類型、模式和范圍驗證數(shù)據(jù)要比通過查找已知有害字符的數(shù)據(jù)驗證方法容易。設(shè)計應(yīng)用程序時,應(yīng)了解應(yīng)用程序需要輸入什么內(nèi)容。與潛在的惡意輸入相比,有效數(shù)據(jù)的范圍通常是更為有限的集合。為了使防御更為徹底,可能還需要拒絕已知的有害輸入,達到凈化輸入的效果。
(三)盡可能原則
盡可能實現(xiàn)用戶的權(quán)限最小化,應(yīng)用用戶的權(quán)限最小化,控制應(yīng)用用戶對文件、數(shù)據(jù)的訪問,記錄并統(tǒng)計登錄歷史;對重要信息資源設(shè)置敏感標(biāo)記并控制對設(shè)置敏感標(biāo)記資源的操作。
二、運行安全
(一)“嚴禁”原則
為方便使用,無論是軟件還是硬件,都存在缺省配置參數(shù),比如訪問權(quán)限、網(wǎng)絡(luò)服務(wù)端口號、用戶ID及密碼等。如果在系統(tǒng)上線前不對缺省配置進行修改或者禁止,就會遺留安全隱患。為此,應(yīng)用系統(tǒng)上線前,必須調(diào)整、修改系統(tǒng)缺省配置,尤其諸如用戶ID、密碼等涉及系統(tǒng)安全的缺省參數(shù)。
(二)“必須”原則
應(yīng)用系統(tǒng)必須關(guān)閉所有未用網(wǎng)絡(luò)端口,尤其要關(guān)閉能夠遠程控制系統(tǒng)的網(wǎng)絡(luò)端口,如Windows遠程桌面管理端口。以防止黑客利用系統(tǒng)應(yīng)用缺陷,通過網(wǎng)絡(luò)端口攻擊、滲透。
應(yīng)用系統(tǒng)交付前必須進行信息安全評估,信息系統(tǒng)安全已經(jīng)是銀行面臨的重大問題,監(jiān)管部門對信息系統(tǒng)安全問題是零容忍。信息系統(tǒng)安全包括對外安全和對內(nèi)安全。所謂對外安全是能夠有效避免來自互聯(lián)網(wǎng)等外部系統(tǒng)的攻擊、滲透;所謂對內(nèi)安全是指能夠有效避免來自銀行內(nèi)部的攻擊,包括運維人員的違法、違規(guī)、違章操作等。
應(yīng)用系統(tǒng)在交付時,必須提交對信息系統(tǒng)安全的評估報告,說明系統(tǒng)采取了哪些安全措施,經(jīng)過了何種安全測試及結(jié)果;說明系統(tǒng)還存在哪些安全隱患;說明在運維時還需執(zhí)行何種安全防護措施;等等。必須假設(shè)外部系統(tǒng)是不安全的,如果需要從一個不能完全控制的系統(tǒng)接收數(shù)據(jù),則接收到的任何數(shù)據(jù)都應(yīng)該被認為是不安全的。當(dāng)接收用戶輸入的時候,這一點尤其重要。用戶是從用戶界面或應(yīng)用程序客戶端執(zhí)行命令的,許多攻擊者都是利用服務(wù)端缺陷,通過繞過客戶端,將有惡意的數(shù)據(jù)發(fā)送給服務(wù)器。
“緩沖區(qū)溢出”是一個眾所周知的安全問題,其根本原因是向一個內(nèi)存空間(可能是棧,也可能是堆)復(fù)制比內(nèi)存空間大的數(shù)據(jù)量。包括靜態(tài)緩沖區(qū)溢出、堆溢出、數(shù)組索引越界、格式化字符串缺陷、Unicode和ANSI的緩沖區(qū)大小不匹配等多種情況。通常這些情況是在用像C/C++這樣可以靈活操縱內(nèi)存的語言編寫程序造成的。必須嚴格檢查這類程序代碼,消除“緩沖區(qū)溢出”隱患。
(三)“盡可能”原則
盡可能具有防木馬程序設(shè)計,應(yīng)用系統(tǒng)盡可能設(shè)計必要的措施防止木馬程序?qū)γ艽a的截取。,盡可能使用成熟穩(wěn)定版本的軟件或者工具,軟件產(chǎn)品或者工具升級換代非常的迅速,雖然新的版本會帶來很多功能上的提升,但是也可能隱藏著新的缺陷。所以盡可能在功能滿足的情況下使用經(jīng)過驗證的成熟穩(wěn)定的版本。
盡可能保證關(guān)鍵信息安全傳遞,應(yīng)用系統(tǒng)盡可能完善各種關(guān)鍵信息(例如:磁道信息、卡片校驗碼、制卡文件等)傳遞機制,如采用硬件轉(zhuǎn)加密、密碼信封等方式,確保關(guān)鍵信息在系統(tǒng)和使用用戶(人)之間的安全傳遞。盡可能提供安全審計功能,在應(yīng)用系統(tǒng)中發(fā)生的各種與安全相關(guān)的事件,應(yīng)盡可能記錄下來。審計記錄應(yīng)包括安全事件的主體、客體、時間、事件類型、事件內(nèi)容、事件結(jié)果等內(nèi)容。應(yīng)提供審計記錄查詢、分類、分析和存儲保護;能對特定安全事件進行報警;確保審計記錄不被破壞或非授權(quán)訪問。應(yīng)為安全管理中心提供接口;對不能由系統(tǒng)獨立處理的安全事件,提供由授權(quán)主體調(diào)用的接口。并提供審計功能的啟動和關(guān)閉功能。