2023年應(yīng)用系統(tǒng)安全開發(fā)技術(shù)規(guī)范培訓(xùn)資料_第1頁
2023年應(yīng)用系統(tǒng)安全開發(fā)技術(shù)規(guī)范培訓(xùn)資料_第2頁
2023年應(yīng)用系統(tǒng)安全開發(fā)技術(shù)規(guī)范培訓(xùn)資料_第3頁
2023年應(yīng)用系統(tǒng)安全開發(fā)技術(shù)規(guī)范培訓(xùn)資料_第4頁
2023年應(yīng)用系統(tǒng)安全開發(fā)技術(shù)規(guī)范培訓(xùn)資料_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

應(yīng)用系統(tǒng)安全開發(fā)技術(shù)規(guī)范

(版本號VI.3)

朗新科技股份有限公司

二O一五年十二月

更改履歷

更改的

版本號修改編號更改時間更改簡要描述更改人批準(zhǔn)人

圖表和章節(jié)號

0.52013-11-24初稿施偉施偉

1.02015-11-19修改宋月欣陳志明

1.12015-11-30修改宋月欣陳志明

1.22015-12-3修改宋月欣施偉

1.32015-12-3修改施偉

注:更改人除形成初稿,以后每次修改在未批準(zhǔn)確認(rèn)前均需采用修訂的方式

進行修改。

目錄

1背景與目標(biāo)........................................................1

2安全編程概念......................................................1

2.1安全編程.....................................................1

2.2結(jié)構(gòu)化編程...................................................2

2.3脆弱性.......................................................2

2.4可信計算.....................................................3

2.5安全可信模塊.................................................3

2.6不可信任模塊.................................................3

2.7敏感信息.....................................................3

2.8特權(quán).........................................................3

2.9信息隱藏.....................................................3

2.10中間件.......................................................4

2.11歹匕鎖....................................................................4

2.12可信邊界.....................................................4

2.13元字符.......................................................4

2.14參數(shù)化查詢...................................................4

2.15UNIXJAIL環(huán)境...............................................5

2.16臨時文件.....................................................5

2.17信息端.......................................................5

2.18SSL...................................................................................................................5

2.19TLS...................................................................................................................5

2.20HTTPS.............................................................................................................5

2.21HTTP會話....................................................6

2.22COOKIE.............................................................................................................6

2.23HTTPONLYCOOKIE...........................................................................................6

3安全編程原則......................................................7

3.1統(tǒng)一的安全規(guī)范...............................................7

3.2模塊劃分.....................................................7

3.3最小化功能...................................................7

3.4最小化特權(quán)...................................................8

3.5對多任務(wù)、多進程加以關(guān)注.....................................8

3.6界面輸出最小化...............................................8

3.7使代碼簡單、最小化和易于修改.................................8

3.8避免高危的服務(wù)、協(xié)議.........................................8

3.9數(shù)據(jù)和代碼分離...............................................8

3.10關(guān)鍵數(shù)據(jù)傳輸保護.............................................9

3.11禁止賦予用戶進程特權(quán).........................................9

3.12使用適當(dāng)?shù)臄?shù)據(jù)類型...........................................9

3.13使用經(jīng)過驗證的安全代碼.......................................9

3.14使用應(yīng)用中間件...............................................9

3.15設(shè)計錯誤、異常處理機制......................................9

3.16提供備份機制................................................10

3.17檢查傳遞變量的合法性........................................10

3.18檢查所有函數(shù)返回代碼........................................10

3.19修改面向用戶的操作的反饋缺省描述............................10

3.20文件操作的要求..............................................10

3.21其他編碼原則................................................10

4應(yīng)用安全分析....................................................11

4.1安全需求....................................................11

4.2安全威脅....................................................12

4.2.1Web安全漏洞..............................................12

4.2.2拒絕服務(wù)攻擊..............................................12

4.2.3嗅探攻擊..................................................13

4.2.4中間人攻擊................................................13

4.3安全約束....................................................14

5安全編程要求.....................................................14

5.1輸入處理....................................................14

5.1.1建立可信邊界..............................................14

5.1.2驗證各種來源的輸入........................................15

5.1.3保證所有的輸入信息是被驗證過的............................15

5.1.4對輸入內(nèi)容進行規(guī)范化處理后再進行驗證......................15

5.1.5選擇合適的數(shù)據(jù)驗證方式....................................16

5.1.6防范元字符攻擊............................................16

5.1.7拒絕驗證失敗的數(shù)據(jù)........................................16

5.1.8在服務(wù)端進行驗證..........................................16

5.1.9建立統(tǒng)一的輸入驗證接口....................................16

5.1.10控制寫入日志的信息........................................17

5.1.11從服務(wù)器端提取關(guān)鍵參數(shù)....................................17

5.2輸出處理....................................................17

5.2.1限制返回給客戶的信息......................................17

5.2.2建立錯誤信息保護機制......................................17

5.3數(shù)據(jù)庫訪問..................................................17

5.3.1合理分配數(shù)據(jù)庫訪問權(quán)限....................................17

5.3.2合理存放數(shù)據(jù)庫連接帳號和密碼信息..........................17

5.3.3使用參數(shù)化請求方式........................................18

5.3.4對SQL語句中來自于不可信區(qū)域的輸入?yún)?shù)進行驗證..........19

5.3.5對數(shù)據(jù)庫操作的返回數(shù)據(jù)進行驗證............................19

5.3.6分次提取數(shù)據(jù)..............................................19

5.3.7通過row(行)級別的訪問控制來使用數(shù)據(jù)庫..................19

5.3.8確保數(shù)據(jù)庫資源被釋放......................................19

5.4文件操作....................................................20

5.4.1對上傳文件進行限制........................................20

5.4.2把文件名以及文件內(nèi)容作為不可信的輸入對待..................20

5.4.3安全的使用文件名..........................................20

5.4.4使用文件系統(tǒng)訪問控制......................................20

5.4.5注意文件訪問競爭條件......................................20

5.4.6安全使用臨時文件..........................................21

5.4.7確保文件系統(tǒng)資源被釋放....................................21

6安全特征.........................................................21

6.1關(guān)注應(yīng)用的對象重用..........................................21

6.2用戶訪問控制信息的機密性....................................21

6.3不要在客戶端存放敏感數(shù)據(jù)....................................21

6.4避免內(nèi)存溢出................................................22

6.5可配置數(shù)據(jù)保護..............................................22

6.6禁止在源代碼中寫入口令......................................22

6.7隨機數(shù)......................................................22

6.8使用可信的密碼算法..........................................23

6.9異常管理....................................................23

7應(yīng)用安全設(shè)計規(guī)范................................................24

7.1應(yīng)用安全規(guī)劃................................................24

7.2數(shù)據(jù)安全等級劃分............................................24

7.3數(shù)據(jù)庫規(guī)劃..................................................24

7.3.1用戶權(quán)限..................................................24

7.3.2數(shù)據(jù)源設(shè)計................................................24

7.3.3外部系統(tǒng)訪問..............................................25

7.4角色劃分....................................................25

7.5URL規(guī)戈IJ.......................................................................................................25

7.6程序文件目錄規(guī)劃............................................25

7.6.1數(shù)據(jù)及程序分離............................................25

7.6.2靜態(tài)程序資源..............................................25

7.6.3程序文件分類..............................................25

7.7COOKIE...........................................................................................................26

7.8文件安全....................................................26

7.8.1文件存儲..................................................26

7.8.2文件操作..................................................26

7.8.3文件類型..................................................26

7.9第三方組件安全.............................................26

7.9.1組件兼容性................................................26

7.9.2組件安全及成熟度..........................................26

7.9.3組件配置..................................................27

7.10WEBSERVICE..................................................................................................27

7.11RESTFULWEBSERVICE.................................................................................28

7.12應(yīng)用安全關(guān)注點..............................................29

7.13應(yīng)用安全限制應(yīng)對方案........................................30

7.13.1外網(wǎng)隔離..................................................30

7.13.2外網(wǎng)文件操作..............................................31

7.13.3正向和反向隔離裝置(國網(wǎng)系統(tǒng))...........................31

8應(yīng)用安全開發(fā)規(guī)范................................................32

8.1JAVA及WEB安全編程規(guī)范...................................32

8.1.1不信任未知................................................32

8.1.2數(shù)據(jù)層開發(fā)................................................32

8.1.3會話管理..................................................34

8.1.4Cookie.........................................................................................................34

8.1.5輸入驗證..................................................35

8.1.6輸入文件名的驗證..........................................35

8.1.7輸出處理..................................................36

8.1.8敏感信息處理..............................................38

8.1.9異常信息處理..............................................38

8.1.10特殊頁面跳轉(zhuǎn)..............................................38

8.1.11文件操作..................................................39

8.1.12資源釋放..................................................40

8.1.13內(nèi)存控制..................................................40

8.1.14外部程序調(diào)用漏洞.........................................40

8.1.15整數(shù)溢出.................................................40

8.2C++安全編程規(guī)范................................................41

8.2.1不信任未知...............................................41

8.2.2免緩存區(qū)溢出.............................................41

8.2.3免緩整數(shù)溢出.............................................44

8.2.4域名合法性檢查...........................................47

8.2.5檢查返回值...............................................49

8.2.6產(chǎn)生隨機數(shù)...............................................49

8.2.7驗證輸入文件名...........................................50

8.2.8類設(shè)計注意事項...........................................51

8.2.9外部程序調(diào)用漏洞.........................................52

8.2.10臨時文件處理..............................................52

編號:

時間:2021年x月x日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第1頁共61頁

1背景與目標(biāo)

在Internet大眾化及Web技術(shù)飛速演變的今天,Web安全所面臨的挑戰(zhàn)日益

嚴(yán)峻。黑客攻擊技術(shù)越來越成熟和大眾化,針對Web的攻擊和破壞不斷增長,Web

安全風(fēng)險達(dá)到了前所未有的高度。

許多程序員不知道如何開發(fā)安全的應(yīng)用程序,開發(fā)出來的Web應(yīng)用存在較多

的安全漏洞,這些安全漏洞一旦被黑客利用將導(dǎo)致嚴(yán)重甚至是災(zāi)難性的后果。這

并非危言聳聽,類似的網(wǎng)上事故舉不勝舉,公司的Web產(chǎn)品也曾多次遭黑客攻擊,

甚至有黑客利用公司W(wǎng)eb產(chǎn)品的漏洞敲詐運營商,造成極其惡劣的影響。

本規(guī)范為解決Web應(yīng)用系統(tǒng)安全問題,對主要的應(yīng)用安全問題進行分析,并

有針對性的從設(shè)計及開發(fā)規(guī)范、開發(fā)管理、安全組件框架、安全測試方面提供整

體的安全解決方案。

使本組織能以標(biāo)準(zhǔn)的、規(guī)范的方式設(shè)計和編碼。通過建立編碼規(guī)范,以使每

個開發(fā)人員養(yǎng)成良好的編碼風(fēng)格和習(xí)慣;并以此形成開發(fā)小組編碼約定,提高程

序的可靠性、可讀性、可修改性、可維護性和一致性等,增進團隊間的交流,并

保證軟件產(chǎn)品的質(zhì)量。

2安全編程概念

2.1安全編程

安全編程是指開發(fā)人員首先需要具備一定的安全知識,然后識別數(shù)據(jù)在流轉(zhuǎn)

(輸入、處理和輸出)過程中可能面對的威脅,對這些威脅進行分析得出其利用

的漏洞,通過合理地編寫代碼消除這些漏洞,降低軟件面臨的風(fēng)險。本規(guī)范對開

發(fā)人員的編碼提出統(tǒng)一的安全要求,主要涉及輸入處理、輸出處理、數(shù)據(jù)庫訪

問、文件操作、異常管理等方面,如下圖:

第1頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第2頁共61頁

輸入處理部分能指導(dǎo)開發(fā)者避免用戶的不良輸入;輸出處理能指導(dǎo)開發(fā)者對

輸出內(nèi)容進行過濾;數(shù)據(jù)庫訪問、文件操作部分則能指導(dǎo)開發(fā)者進行數(shù)據(jù)庫查

詢,寫入文件等操作時進行防護;而異常管理、敏感數(shù)據(jù)保護、對象重用等技

術(shù)則指導(dǎo)開發(fā)者改進軟件的自身缺陷。WEB開發(fā)規(guī)范部分則指導(dǎo)用戶在WEB

系統(tǒng)(B/S架構(gòu)應(yīng)用)的研發(fā)方面時如何增加對應(yīng)用軟件的保護。

2.2結(jié)構(gòu)化編程

結(jié)構(gòu)化編程,一種編程典范。它采用子程序、程式碼區(qū)塊、for循環(huán)以及while

循環(huán)等結(jié)構(gòu),來取代傳統(tǒng)的gOtOo希望借此來改善計算機程序的明晰性、品質(zhì)以

及開發(fā)時間,并且避免寫出面條式代碼。

2.3脆弱性

脆弱性指計算機系統(tǒng)安全方面的缺陷,使得系統(tǒng)或其應(yīng)用數(shù)據(jù)的保密性、完

整性、可用性、訪問控制、監(jiān)測機制等面臨威脅。

第2頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第3頁共61頁

2.4可信計算

可信計算的行為會更全面地遵循設(shè)計,而執(zhí)行設(shè)計者和軟件編寫者所禁止的

行為的概率很低。

2.5安全可信模塊

審計和訪問控制模塊是唯一的安全可信模塊。

2.6不可信任模塊

除審計和訪問控制模塊外其它所有模塊均為不可信模塊。

2.7敏感信息

系統(tǒng)的敏感信息包括用戶身份信息、認(rèn)證信息、授權(quán)信息、交易過程中的私

密或隱私信息、其它的敏感信息。

2.8特權(quán)

特權(quán)只是允許去做并不是每個人都可以做的事情。

2.9信息隱藏

信息隱藏指在設(shè)計和確定模塊時,使得一個模塊內(nèi)包含的特定信息(過程或

數(shù)據(jù)),對于不需要這些信息的其他模塊來說,是不可訪問的。

信息隱藏基本原理框圖:

第3頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第4頁共61頁

2.10中間件

中間件是提供系統(tǒng)軟件和應(yīng)用軟件之間連接的軟件,以便于軟件各部件之間

的溝通.中間件技術(shù)創(chuàng)建在對應(yīng)用軟件部分常用功能的抽象上,將常用且重要的過

程調(diào)用、分布式組件、消息隊列、事務(wù)、安全、連結(jié)器、商業(yè)流程、網(wǎng)絡(luò)并發(fā)、

HTTP服務(wù)器、WebService等功能集于一身或者分別在不同品牌的不同產(chǎn)品中分

別完成。

2.11死鎖

死鎖是操作系統(tǒng)或軟件運行的一種狀態(tài):在多任務(wù)系統(tǒng)下,當(dāng)一個或多個進

程等待系統(tǒng)資源,而資源又被進程本身或其它進程占用時,就形成了死鎖。

2.12可信邊界

可信邊界可以被認(rèn)為是在程序中劃定的一條分隔線,一邊的數(shù)據(jù)是不可信的

而另一邊則是可信的。當(dāng)數(shù)據(jù)要從不可信的一側(cè)到可信一側(cè)的時候,需要使用驗

證邏輯進行判斷。

2.13元字符

元字符就是在編程語言中具有特定含義的字符或者字符串。例如在SQL查詢

中,單引號(,)是危險的字符;在文件系統(tǒng)路徑中兩個點號(..)是危險的字符;

在命令shell中,分號(;)和雙&(&&)符號同樣是危險的字符,而換行符(\n)

對日志文件很關(guān)鍵。

2.14參數(shù)化查詢

參數(shù)化查詢(ParameterizedQuery或ParameterizedStatement)是指在設(shè)計與

數(shù)據(jù)庫鏈接并訪問數(shù)據(jù)時,在需要填入數(shù)值或數(shù)據(jù)的地方,使用參數(shù)(Parameter)

來給值,這個方法目前已被視為最有效可預(yù)防SQL注入攻擊(SQLInjection)的攻

擊手法的防御方式。

第4頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第5頁共61頁

2.15UNIXJAIL環(huán)境

一個被改變根目錄的程序不可以訪問和命名在被改變根目錄外的文件,那個

w

根目錄叫做"chroot監(jiān)獄(chrootjail,chrootprison)o

2.16臨時文件

創(chuàng)建臨時文件的程序會在完成時將其刪除。

2.17信息熔

信息熠指信息的不確定性,一則高信息度的信息端是很低的,低信息度的燧則

高。

2.18SSL

安全套接層(SecureSocketsLayer,SSL),一種安全協(xié)議,是網(wǎng)景公司(Netscape)

在推出Web瀏覽器首版的同時提出的,目的是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性。

SSL在傳輸層對網(wǎng)絡(luò)連接進行加密。

SSL采用公開密鑰技術(shù),保證兩個應(yīng)用間通信的保密性和可靠性,使客戶與

服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽。它在服務(wù)器和客戶機兩端可同時被支持,

目前已成為互聯(lián)網(wǎng)上保密通訊的工業(yè)標(biāo)準(zhǔn)?,F(xiàn)行Web瀏覽器亦普遍將HTTP和SSL

相結(jié)合,從而實現(xiàn)安全通信。此協(xié)議和其繼任者是TLS。

2.19TLS

SSL(SecureSocketsLayer)是網(wǎng)景公司(Netscape)設(shè)計的主要用于Web的

安全傳輸協(xié)議。這種協(xié)議在Web上獲得了廣泛的應(yīng)用。IETF()將SSL作了標(biāo)準(zhǔn)

化,即RFC2246,并將其稱為TLS(TransportLayerSecurity),其最新版本是

RFC5246,版本1.2。從技術(shù)上講,TLS1.0與SSL3.0的差異非常微小。

2.20HTTPS

超文本傳輸安全協(xié)議(縮寫:HTTPS,英語:HypertextTransferProtocolSecure)

第5頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第6頁共61頁

是超文本傳輸協(xié)議和SSL/TLS的組合,用以提供加密通訊及對網(wǎng)絡(luò)服務(wù)器身份的

鑒定。HTTPS連接經(jīng)常被用于萬維網(wǎng)上的交易支付和企業(yè)信息系統(tǒng)中敏感信息的

傳輸。HTTPS不應(yīng)與在RFC2660中定義的安全超文本傳輸協(xié)議(S-HTTP)相混。

2.21Http會話

在計算機科學(xué)領(lǐng)域來說,尤其是在網(wǎng)絡(luò)領(lǐng)域,會話(session)是一種持久網(wǎng)絡(luò)

協(xié)議,在用戶(或用戶代理)端和服務(wù)器端之間創(chuàng)建關(guān)聯(lián),從而起到交換數(shù)據(jù)包

的作用機制,session在網(wǎng)絡(luò)協(xié)議(例如telnet或FTP)中是非常重要的部分。

在不包含會話層(例如UDP)或者是無法長時間駐留會話層(例如HTTP)

的傳輸協(xié)議中,會話的維持需要依靠在傳輸數(shù)據(jù)中的高級別程序。例如,在瀏覽

器和遠(yuǎn)程主機之間的HTTP傳輸中,HTTPcookie就會被用來包含一些相關(guān)的信息,

例如sessionID,參數(shù)和權(quán)限信息等。

當(dāng)客戶端在多個服務(wù)器調(diào)取數(shù)據(jù)時,保持會話狀態(tài)的一致性是需要注意的,

客戶端需用同時保持和某一個主機的連接,或者多個服務(wù)器端需要共享一個儲存

會話信息的文件系統(tǒng)或者數(shù)據(jù)庫。否則,當(dāng)用戶在一個新的而不是一開始保存會

話信息的主機上提交訪問請求的時候,主機會因為無法獲知原來主機的會話的訪

問狀態(tài)而產(chǎn)生問題。

2.22Cookie

Cookie(復(fù)數(shù)形態(tài)Cookies),中文名稱為小型文本文件或小甜餅,指某些網(wǎng)站

為了辨別用戶身份而儲存在用戶本地終端(ClientSide)上的數(shù)據(jù)(通常經(jīng)過加密)。

定義于RFC2109。為網(wǎng)景公司的前雇員LouMontulli在1993年3月所發(fā)明。

2.23HttpOnlyCookie

HttpOnly是包含在Http響應(yīng)頭信息Set-Cookie中的一個額外標(biāo)志,如果瀏覽

器支持HttpOnly標(biāo)志的話,在生成Cookie時使用HttpOnly標(biāo)志可幫助減輕客戶

端腳本訪問受保護的Cookie時帶來的風(fēng)險(客戶端腳本不能訪問HttpOnlyCookie)。

第6頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第7頁共61頁

3安全編程原則

3.1統(tǒng)一的安全規(guī)范

每個軟件項目在設(shè)計階段都應(yīng)明確在項目實施過程中項目組應(yīng)遵循的統(tǒng)一規(guī)

范,具體包括:

1.命名規(guī)則、組件使用規(guī)范、異常處理規(guī)范、日志處理規(guī)范、工具使用要求、

代碼集成規(guī)范。

2.針對本規(guī)范提出的主要代碼脆弱性應(yīng)進行相應(yīng)的防范設(shè)計,具體內(nèi)容應(yīng)在

軟件概要設(shè)計中體現(xiàn)或有單獨的文檔體現(xiàn)。

3.2模塊劃分

1.軟件應(yīng)該按照安全性劃分模塊,審計和訪問控制模塊為安全可信模塊,其

它模塊為不可信任模塊。只有安全可信模塊才可以執(zhí)行安全控制功能,其

它的模塊不能訪問安全可信模塊的安全信息、功能或者權(quán)限。安全可信模

塊應(yīng)該與其它模塊分離,由經(jīng)授權(quán)的內(nèi)部專人進行管理。

2.只有安全可信模塊,才能以高安全等級訪問系統(tǒng)的敏感信息,對于其他模

塊限制其訪問敏感信息。

3.3最小化功能

根據(jù)“沒有明確允許的就默認(rèn)禁止”的原則,軟件應(yīng)只包含那些為達(dá)到某個

目標(biāo)而確實需要的功能,不應(yīng)包含只是在將來某個時間需要但需求說明書中沒有

的功能。軟件在最小化功能建設(shè)方面應(yīng)遵循如下原則:

1.只運行明確定義的功能。

2.系統(tǒng)調(diào)用只在確實需要的時候。

3.一次只執(zhí)行一個任務(wù)。

4.只有在上一個任務(wù)完成后才開始下一個任務(wù)。

5.只在確實需要的時候訪問數(shù)據(jù)。

第7頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第8頁共61頁

3.4最小化特權(quán)

1.只為程序中需要特權(quán)的部分授與特權(quán)。

2.只授與部分絕對需要的具體特權(quán)。

3.將特權(quán)的有效時間或者可以有效的時間限制到絕對最小。

3.5對多任務(wù)'多進程加以關(guān)注

軟件開發(fā)應(yīng)盡量使用單任務(wù)的程序。如果軟件需要使用多任務(wù)和多進程,應(yīng)

該認(rèn)真分析研究多任務(wù)和多進程會不會發(fā)生沖突,同步所有的進程和任務(wù)以避免

沖突。同時作為結(jié)構(gòu)化的編程,每個原子化組件都要保證一個入口和一個出口。

如果進程之間需要交互,則這些交互操作應(yīng)同步。對于每一種可能的交互情況都

要考慮相關(guān)的安全策略。

3.6界面輸出最小化

軟件應(yīng)保持用戶界面只提供必須的功能,沒有多余的、不必要的功能,確保

用戶不能通過用戶界面直接訪問數(shù)據(jù)或者直接訪問被保護對象。

3.7使代碼簡單'最小化和易于修改

開發(fā)時應(yīng)盡量使代碼簡單、最小化和易于修改。使用結(jié)構(gòu)化的編程語言,盡

量避免使用遞歸和Goto聲明。使用簡單的代碼,清除不必要的功能,防止采用

信息隱藏方式進行數(shù)據(jù)保護。

3.8避免高危的服務(wù)'協(xié)議

軟件應(yīng)盡量避免使用不加保護的及已被證明存在安全漏洞的服務(wù)和通信協(xié)議

傳輸文件,如FTP、SMTPo

3.9數(shù)據(jù)和代碼分離

軟件應(yīng)該把數(shù)據(jù)與程序放置在不同的目錄中,這里的數(shù)據(jù)包括遠(yuǎn)程下載文件

等。

第8頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第9頁共61頁

3.10關(guān)鍵數(shù)據(jù)傳輸保護

1.軟件在傳輸關(guān)鍵數(shù)據(jù)時,使用加密算法保證數(shù)據(jù)在通信過程不被破譯,使

用數(shù)字簽名保證數(shù)據(jù)在傳輸過程中的一致性和不可否認(rèn)性。相關(guān)的加密算

法和簽名技術(shù)等應(yīng)符合國家相關(guān)法律法規(guī)要求。

2.信息隱藏是不可靠、效率低的做法,軟件應(yīng)該使用正確的安全保護措施,

不要依賴隱藏進行數(shù)據(jù)保護。

3.11禁止賦予用戶進程特權(quán)

用戶進程的授權(quán)應(yīng)采用最小授權(quán)法,對于軟件的普通用戶進程,禁止賦予該

類進程特權(quán)用戶權(quán)限。特權(quán)用戶類型包括:

1.超級用戶。

2.直接操作數(shù)據(jù)庫用戶。

3.安全管理用戶。

3.12使用適當(dāng)?shù)臄?shù)據(jù)類型

應(yīng)該小心使用數(shù)據(jù)類型,盡量使用占用內(nèi)存較小的數(shù)據(jù)類型,如可用整型數(shù)

據(jù)的不用實型,特別是在程序接口部分。例如,在一些編程語言中signed和

unsigned的數(shù)據(jù)類型是視為不同的(如C或者C++語言)。

3.13使用經(jīng)過驗證的安全代碼

使用經(jīng)過驗證的安全代碼模塊和外部源程序,防止?jié)撛诘陌踩L(fēng)險。

3.14使用應(yīng)用中間件

中間件作為一種應(yīng)用層架構(gòu),軟件設(shè)計應(yīng)盡可能使用中間件,中間件選型時

應(yīng)選擇成熟的、業(yè)界主流的中間件產(chǎn)品。

3.15設(shè)計錯誤'異常處理機制

軟件設(shè)計開發(fā)時應(yīng)建立防止系統(tǒng)死鎖的機制,異常情況的處理和恢復(fù)機制,

第9頁共61頁

編號:

時間:2021年x月x日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第1。頁共61頁

具體包括錯誤和異常檢測、數(shù)據(jù)回滾、安全錯誤通知、錯誤和異常記錄、斷點保

護等。

3.16提供備份機制

為保證運行數(shù)據(jù)的完整性和可用性,軟件開發(fā)應(yīng)設(shè)計有效的備份策略,根據(jù)

業(yè)務(wù)和系統(tǒng)維護需要提供定期或不定期、自動或手動方式的備份機制。

3.17檢查傳遞變量的合法性

應(yīng)檢查所有傳遞給系統(tǒng)函數(shù)調(diào)用(SystemCalls)或本地調(diào)用(NativeCalls)

的變量的合法性。

3.18檢查所有函數(shù)返回代碼

應(yīng)檢查所有函數(shù)調(diào)用返回代碼(錯誤代碼),對每個期望的返回值設(shè)置相應(yīng)的

處理程序。

3.19修改面向用戶的操作的反饋缺省描述

應(yīng)對面向用戶的操作的反饋缺省描述進行必要的封裝,刪除有關(guān)后臺系統(tǒng)或

其它敏感信息。

3.20文件操作的要求

在需要進行文件操作時,應(yīng)預(yù)先設(shè)定目前工作路徑(全路徑名),使用全路徑

名表示文件的位置。

3.21其他編碼原則

1.當(dāng)一個進程對敏感對象(包含秘密信息或包含不可更改信息)使用完后,

應(yīng)立即擦除對象的敏感信息,然后再刪除對象。任何不需要使用的資源應(yīng)

及時釋放。

2.確保所有用來指示數(shù)組下標(biāo)的數(shù)據(jù)(或指針)都指向了一個有效的數(shù)組元

素。如果某個函數(shù)不能保證下標(biāo)所指向元素的有效性,或者根本不去檢

第10頁共61頁

編號:

時間:2021年x月x日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第11頁共61頁

查邊界時,不要使用該函數(shù),應(yīng)該尋找一個安全的函數(shù),或者自己重新編

寫一個或者封裝一個不安全的函數(shù),加上必要的判斷條件,使它安全。

3.當(dāng)輸入不可信任數(shù)據(jù)時,要在該數(shù)據(jù)的內(nèi)容和格式上同時加以檢查。對于

整數(shù),應(yīng)該檢查數(shù)據(jù)大小是否超出了能夠表示的范圍;對于輸入的字符串,

要確保長度沒有溢出,保證每一個字符都是有效的。

4.對經(jīng)常使用的類似的SQL語句應(yīng)使用綁定變量的方法,避免數(shù)據(jù)庫執(zhí)行

類似SQL語句時重復(fù)解析、重復(fù)訪問數(shù)據(jù)文件的行為。

5.程序編碼結(jié)束后,應(yīng)對代碼進行優(yōu)化,提高應(yīng)用處理SQL的性能。

6.禁止使用通配符的方式進行數(shù)據(jù)的插入操作。

7.采用數(shù)據(jù)庫作為系統(tǒng)間接口方式時,應(yīng)建立獨立的接口表,并按最小化特

權(quán)原則進行授權(quán)。

4應(yīng)用安全分析

4.1安全需求

系統(tǒng)安全本質(zhì)上屬于信任問題,要保證應(yīng)用安全,就必須將解決各種操作過

程中不可信問題。安全的幾個基本要素為機密性、完整性、可用性、可審計性、

不可抵賴性等方面的安全要求。

機密性要求保護數(shù)據(jù)內(nèi)容不能泄露,加密是實現(xiàn)機密性的要求的常見手段。

完整性要求保護數(shù)據(jù)內(nèi)容是完整、沒有被篡改的。

可用性要求保護資源是可被按照需要訪問。

可審計性對出現(xiàn)的安全問題提供調(diào)查的依據(jù)和手段。

不可抵賴性建立有效的責(zé)任機制,防止用戶否認(rèn)其行為。

第11頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第12頁共61頁

4.2安全威脅

4.2.1Web安全漏洞

根據(jù)結(jié)合國網(wǎng)系統(tǒng)安全檢測項目常見安全問題及OWASP組織發(fā)布的安全漏

洞,系統(tǒng)中存在的需要解決的安全風(fēng)險如下:

序號安全威脅產(chǎn)生環(huán)節(jié)

1SQL注入編碼

2失效的身份認(rèn)證及會話管理設(shè)計、編碼

3跨站腳本(XSS)編碼

4點擊劫持(Clickjacking)編碼

4不安全的直接對象引用編碼

5安全配置錯誤配置實施

6敏感信息泄露設(shè)計、編碼

7功能級訪問控制缺失(失敗的URL訪問權(quán)設(shè)計

限限制)

8跨站請求偽造(CSRF)編碼

9使用含有已知漏洞的組件管理、設(shè)計

10未驗證的重定向和轉(zhuǎn)發(fā)編碼

11傳輸層保護不足設(shè)計、編碼

12文件上傳漏洞編碼

13不安全的加密存儲設(shè)計、編碼

4.2.2拒絕服務(wù)攻擊

分布式拒絕服務(wù)攻擊(英文:DistributedDenialofService,縮寫:DDoS)亦

稱洪水攻擊。顧名思義,即是利用網(wǎng)絡(luò)上已被攻陷的電腦作為“僵尸”,向某一特

定的目標(biāo)電腦發(fā)動密集式的“拒絕服務(wù)”式攻擊,用以把目標(biāo)電腦的網(wǎng)絡(luò)資源及

系統(tǒng)資源耗盡,使之無法向真正正常請求的用戶提供服務(wù)。黑客通過將一個個“喪

尸”或者稱為“肉雞”組成僵尸網(wǎng)絡(luò),就可以發(fā)動大規(guī)模DDoS或SYN洪水網(wǎng)絡(luò)

攻擊,或者將“喪尸”們組到一起進行帶有利益的刷網(wǎng)站流量、Email垃圾郵件群

第12頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第13頁共61頁

發(fā),癱瘓預(yù)定目標(biāo)受雇攻擊競爭對手等商業(yè)活動。

4.2.3嗅探攻擊

利用計算機的網(wǎng)絡(luò)接口截獲目的地為其他計算機的數(shù)據(jù)報文的一種技術(shù)。它

工作在網(wǎng)絡(luò)的底層,把網(wǎng)絡(luò)傳輸?shù)娜繑?shù)據(jù)記錄下來.嗅探器可以幫助網(wǎng)絡(luò)管理員

查找網(wǎng)絡(luò)漏洞和檢測網(wǎng)絡(luò)性能。嗅探器可以分析網(wǎng)絡(luò)的流量,以便找出所關(guān)心的

網(wǎng)絡(luò)中潛在的問題。

證明你的網(wǎng)絡(luò)有嗅探器有兩條經(jīng)驗:

1.網(wǎng)絡(luò)通訊丟包率非常高:通過一些網(wǎng)管軟件,可以看到信息包傳送情況,

最簡單是ping命令。它會告訴你掉了百分之多少的包。如果你的網(wǎng)絡(luò)結(jié)

構(gòu)正常,而又有20%—30%數(shù)據(jù)包丟失以致數(shù)據(jù)包無法順暢的流到目的

地。就有可能有人在監(jiān)聽,這是由于嗅探器攔截數(shù)據(jù)包導(dǎo)致的。

2.網(wǎng)絡(luò)帶寬出現(xiàn)反常:通過某些帶寬控制器,可以實時看到目前網(wǎng)絡(luò)帶寬的

分布情況,如果某臺機器長時間的占用了較大的帶寬,這臺機器就有可能

在監(jiān)聽。應(yīng)該也可以察覺出網(wǎng)絡(luò)通訊速度的變化。

4.2.4中間人攻擊

在密碼學(xué)和計算機安全領(lǐng)域中,中間人攻擊(Man-in-the-middleattack,通

??s寫為MITM)是指攻擊者與通訊的兩端分別建立獨立的聯(lián)系,并交換其所收

到的數(shù)據(jù),使通訊的兩端認(rèn)為他們正在通過一個私密的連接與對方直接對話,但

事實上整個會話都被攻擊者完全控制。在中間人攻擊中,攻擊者可以攔截通訊雙

方的通話并插入新的內(nèi)容。在許多情況下這是很簡單的(例如,在一個未加密的

Wi-Fi無線接入點的接受范圍內(nèi)的中間人攻擊者,可以將自己作為一個中間人插入

這個網(wǎng)絡(luò))。

一個中間人攻擊能成功的前提條件是攻擊者能將自己偽裝成每一個參與會

話的終端,并且不被其他終端識破。中間人攻擊是一個(缺乏)相互認(rèn)證的攻擊。

大多數(shù)的加密協(xié)議都專門加入了一些特殊的認(rèn)證方法以阻止中間人攻擊。例如,

SSL協(xié)議可以驗證參與通訊的一方或雙方使用的證書是否是由權(quán)威的受信任的數(shù)

字證書認(rèn)證機構(gòu)頒發(fā),并且能執(zhí)行雙向身份認(rèn)證。

第13頁共61頁

編號:

時間:2021年x月x日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第14頁共61頁

4.3安全約束

序號限制

1外網(wǎng)不允許部署數(shù)據(jù)庫

2外網(wǎng)僅提供HTTP、HTTPS訪問,不提供等

3外網(wǎng)訪問內(nèi)網(wǎng)必須通過強隔離裝置,僅支持TNS協(xié)議(國網(wǎng)系統(tǒng)要求)

4外網(wǎng)應(yīng)用不允許直接訪問內(nèi)網(wǎng)關(guān)鍵業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫

5其它系統(tǒng)原則上都不允許直接連接營銷系統(tǒng)數(shù)據(jù)庫

5安全編程要求

5.1輸入處理

5.1.1建立可信邊界

需要在程序中定義清晰的可信邊界。在一些代碼中用于保存可信數(shù)據(jù)的數(shù)據(jù)

結(jié)構(gòu),不能被用來在其它代碼中存儲不可信數(shù)據(jù)。使數(shù)據(jù)穿越可信邊界的次數(shù)降

到最低。

當(dāng)程序混淆了可信和不可信數(shù)據(jù)的界限時會導(dǎo)致安全邊界發(fā)生問題,最容易

導(dǎo)致這種錯誤的情況是把可信和不可信數(shù)據(jù)混合在一個數(shù)據(jù)結(jié)構(gòu)里。如下例:

該例中程序接受一個http請求并將"usrname"參數(shù)放在HTTPsession里,

但是并未檢查用戶是否被授權(quán)。

usrname=request.getParameter(nusmamen);

if(session.getAttribute(ATTR_USR)==null){

session.setAttribute(ATTR_USR,usrname);

由于開發(fā)者都知道用戶是不能直接訪問session對象的,所以很容易信任來自

session的所有信息,但是如果在該session中混合存儲了可信和不可信的數(shù)據(jù),

就會違反完全可信邊界的原則,帶來安全隱患。如果不能很好的建立和維護可信

第14頁共61頁

編號:

時間:2021年X月X日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第15頁共61頁

邊界,開發(fā)者將不可避免的混淆未被驗證和已驗證的數(shù)據(jù),從而導(dǎo)致一些數(shù)據(jù)在

未經(jīng)驗證時就被使用。如果輸入的數(shù)據(jù)在處理前通過一些用戶的交互發(fā)生了改變,

可信邊界就會遇到一定的問題,因為它很可能在所有數(shù)據(jù)進入之前不能做出完全

的輸入驗證。在這種情況

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論