出版時(shí)間:2010-1 出版社:機(jī)械工業(yè)出版社 作者:Robert C. Seacord 頁(yè)數(shù):496 譯者:徐波
Tag標(biāo)簽:無(wú)
前言
在C編程語(yǔ)言中,安全編碼的一個(gè)本質(zhì)要素是具有良好文檔的、可實(shí)行的編碼標(biāo)準(zhǔn)。編碼標(biāo)準(zhǔn)鼓勵(lì)程序員遵循一組根據(jù)項(xiàng)目或組織的要求所確定的統(tǒng)一指導(dǎo)方針,而不是根據(jù)程序員的熟悉或偏好來(lái)作出決定。編碼標(biāo)準(zhǔn)一經(jīng)確立之后,就可以作為標(biāo)尺,對(duì)源代碼進(jìn)行評(píng)估(使用手工或自動(dòng)的過(guò)程)?! 禖ERTc安全編碼標(biāo)準(zhǔn)》(TleCERTCSecureCodingStandard)提供了在c編程語(yǔ)言中進(jìn)行安全編碼的指導(dǎo)方針。這些指導(dǎo)方針的目標(biāo)是消除不安全的編碼實(shí)踐以及可能被利用而導(dǎo)致潛在風(fēng)險(xiǎn)的未定義行為。在開(kāi)發(fā)代碼時(shí)遵循這些標(biāo)準(zhǔn)將會(huì)產(chǎn)生高質(zhì)量的軟件系統(tǒng),使它們具有更健壯的行為,對(duì)攻擊的抵抗性也更強(qiáng)?! ”緲?biāo)準(zhǔn)受到軟件工程協(xié)會(huì)(SEI)和其他得到許可的伙伴培訓(xùn)部門(mén)的支持,并可以作為全球信息保證認(rèn)證(GIAC)安全軟件程序員一c(GSSP-C)考試和認(rèn)證的基礎(chǔ)。安全軟件的需求 1988年11月發(fā)生的Morris蠕蟲(chóng)事件導(dǎo)致10%的Internet系統(tǒng)中止,并使人們對(duì)安全軟件系統(tǒng)有了一個(gè)新的、準(zhǔn)確的認(rèn)識(shí)。20年后,許多安全分析師、軟件開(kāi)發(fā)人員、軟件用戶和策略制定者都在問(wèn)同一個(gè)問(wèn)題:“為什么軟件不能變得更安全?” 首要的問(wèn)題是“軟件安全”這個(gè)術(shù)語(yǔ)用在當(dāng)今已經(jīng)沒(méi)有意義。和其他人一樣,我也試圖定義這個(gè)術(shù)語(yǔ),但是并不存在被廣泛接受的定義。這是為什么呢? 人們已經(jīng)提出了軟件不能變得更安全的各種原因:工具不夠充足、程序員缺乏足夠的培訓(xùn)、開(kāi)發(fā)周期太短等。但是,這些都是可以克服的問(wèn)題。問(wèn)題的根源在于其他方面?! ≤浖荒茏兊酶踩脑蚴侨鄙賹?duì)安全軟件的需要。簡(jiǎn)單地說(shuō),如果一家開(kāi)發(fā)商已經(jīng)推出了一種功能更豐富、性能更出色的產(chǎn)品,而另一家開(kāi)發(fā)商卻提供了一種雖然安全但功能和性能稍差的產(chǎn)品,并且6個(gè)月之后才能上市。毫無(wú)疑問(wèn),顧客會(huì)購(gòu)買(mǎi)第一種產(chǎn)品,生產(chǎn)商也深知這一點(diǎn)?! 槭裁搭櫩筒辉纲?gòu)買(mǎi)安全產(chǎn)品呢?這是由于“安全”這個(gè)詞在這種情況下是沒(méi)有意義的。顧客為什么要放棄看得到的好處,而去購(gòu)買(mǎi)一種定義不明確的、不可觸摸的屬性呢? 本編碼標(biāo)準(zhǔn)就致力于解決這個(gè)問(wèn)題。雖然在開(kāi)發(fā)代碼時(shí)遵循這個(gè)標(biāo)準(zhǔn)并不保證軟件系統(tǒng)的安全性,但是它向我們提供了大量與代碼的質(zhì)量和安全有關(guān)的知識(shí)。它告訴我們?cè)陂_(kāi)發(fā)軟件時(shí)應(yīng)該遵循一組由該領(lǐng)域的前沿專家所開(kāi)發(fā)的行業(yè)標(biāo)準(zhǔn)的規(guī)則和建議。它還告訴我們?cè)陂_(kāi)發(fā)軟件時(shí)遵循這個(gè)標(biāo)準(zhǔn)可以使我們把注意力和精力集中在編寫(xiě)代碼上,而不會(huì)受到一些常見(jiàn)的編碼錯(cuò)誤的困擾。在過(guò)去的20年里,CERT協(xié)作中心已經(jīng)接到報(bào)告并發(fā)表了無(wú)數(shù)由于這些編碼錯(cuò)誤導(dǎo)致的潛在風(fēng)險(xiǎn)。它告訴我們生產(chǎn)代碼的軟件開(kāi)發(fā)人員對(duì)違反這個(gè)標(biāo)準(zhǔn)可能導(dǎo)致并被利用的各種潛在風(fēng)險(xiǎn)具有深入的理解,因此在開(kāi)發(fā)軟件時(shí)頭腦中已經(jīng)形成了真正的安全思想?! ∫虼?,我們?cè)诒緯?shū)中已經(jīng)著手處理的一個(gè)“小”問(wèn)題是改變開(kāi)發(fā)和購(gòu)買(mǎi)軟件系統(tǒng)的市場(chǎng)動(dòng)態(tài)。通過(guò)為C語(yǔ)言程序產(chǎn)生一個(gè)“可供行動(dòng)參考的和可測(cè)量的”定義,即遵循這個(gè)標(biāo)準(zhǔn)中的規(guī)則和建議。我們定義了一種機(jī)制,顧客可以通過(guò)這種機(jī)制來(lái)要求安全的軟件系統(tǒng),而生產(chǎn)商也可以根據(jù)這種機(jī)制來(lái)滿足顧客的要求。
內(nèi)容概要
本書(shū)提供了在C編程語(yǔ)言中進(jìn)行安全編碼的指導(dǎo)方針,描述了C語(yǔ)言程序中導(dǎo)致軟件潛在風(fēng)險(xiǎn)根源的編碼錯(cuò)誤,并根據(jù)嚴(yán)重性、被利用的可能性以及修補(bǔ)成本設(shè)置了優(yōu)先級(jí)。每個(gè)指導(dǎo)方針提供了不安全代碼的例子以及安全的替代方案。如果統(tǒng)一應(yīng)用這些指導(dǎo)方針,可幫助消除導(dǎo)致緩沖區(qū)溢出、格式字符串潛在風(fēng)險(xiǎn)、整數(shù)溢出和常見(jiàn)的軟件潛在風(fēng)險(xiǎn)的關(guān)鍵編碼錯(cuò)誤,從而創(chuàng)建更健壯的高質(zhì)量軟件系統(tǒng)?! ”緯?shū)內(nèi)容新穎,講解詳盡,可作為軟件開(kāi)發(fā)技術(shù)人員的參考用書(shū)?! ≤浖踩詫?duì)于公司的運(yùn)作和財(cái)富具有很大的影響,與個(gè)人的生活也息息相關(guān)。為了創(chuàng)建安全的軟件,開(kāi)發(fā)人員必須知道什么地方存在危險(xiǎn)。C的安全編碼要比許多經(jīng)驗(yàn)豐富的程序員所想像的更為困難?! ”緯?shū)是一本重要的桌面參考手冊(cè),記錄了《CERT C安全編碼標(biāo)準(zhǔn)》的第一次官方發(fā)布。這個(gè)標(biāo)準(zhǔn)逐項(xiàng)描述了C語(yǔ)言程序中導(dǎo)致軟件潛在風(fēng)險(xiǎn)根源的編碼錯(cuò)誤,并根據(jù)嚴(yán)重性、被利用的可能性以及修補(bǔ)成本設(shè)置了優(yōu)先級(jí)。每個(gè)指導(dǎo)方針提供了不安全代碼的例子以及安全的替代方案。如果統(tǒng)一應(yīng)用這些指導(dǎo)方針,可以消除可能導(dǎo)致緩沖區(qū)溢出、格式字符串潛在風(fēng)險(xiǎn)、整數(shù)溢出和常見(jiàn)的軟件潛在風(fēng)險(xiǎn)的關(guān)鍵編碼錯(cuò)誤。
作者簡(jiǎn)介
RobertC.Seacord,在位于賓夕法尼亞州匹茲堡市的軟件工程協(xié)會(huì)(SEI)的CERT小組倡導(dǎo)了安全編碼活動(dòng)。除了其他與安全相關(guān)的活動(dòng),CERT還定期分析軟件潛在風(fēng)險(xiǎn)報(bào)告,并評(píng)估它們對(duì)Intemet和其他關(guān)鍵的基礎(chǔ)結(jié)構(gòu)的風(fēng)險(xiǎn)。Robea是CarnegieMellon大學(xué)計(jì)算機(jī)科學(xué)系和信息網(wǎng)絡(luò)協(xié)會(huì)的助理教授,并在Pittsburgh大學(xué)兼職。作為一名電子技術(shù)專家,Rob.err已經(jīng)出版了SecureCodeinginCandC++》(Addison.Wesley,2005)、(BuildingSystemfromCommercialcomponents}(Addison-Wesley,2002)和《ModernizingLegacysystems))(Addison-Wesley,2003)3本書(shū),并發(fā)表了40余篇有關(guān)軟件安全、基于組件的軟件工程、基于Web的系統(tǒng)設(shè)計(jì)、遺留系統(tǒng)的現(xiàn)代化、組件倉(cāng)庫(kù)、搜索引擎以及用戶界面設(shè)計(jì)和開(kāi)發(fā)的論文。Rob.ert于1982年開(kāi)始在IBM做一名專業(yè)的程序員,致力于通信和操作系統(tǒng)軟件開(kāi)發(fā)、處理器開(kāi)發(fā)和軟件工程。Robea還在XConsortium工作過(guò),為通用桌面環(huán)境和XWindow系統(tǒng)開(kāi)發(fā)和維護(hù)代碼。他是CarnegieMellon大學(xué)在PL22.11(ANSI“C”)的代表,并且是c編程語(yǔ)言的JTCl/SC22/WGl4國(guó)際標(biāo)準(zhǔn)化工作組的一位技術(shù)專家。
書(shū)籍目錄
關(guān)于作者.前言第1章 本標(biāo)準(zhǔn)使用說(shuō)明系統(tǒng)質(zhì)量 自動(dòng)生成的代碼 順應(yīng)性 第2章 預(yù)處理器(PRE) 建議和規(guī)則 風(fēng)險(xiǎn)評(píng)估匯總 相關(guān)規(guī)則和建議 PRE00-C.用內(nèi)聯(lián)函數(shù)或靜態(tài)函數(shù)代替與函數(shù)相似的宏 PRE01-C.在宏參數(shù)名兩邊加上括號(hào) PRE02-C.宏替換列表應(yīng)該加上括號(hào) PRE03-C.應(yīng)該使用typedef定義編碼類型 PRE04-C.不要復(fù)用標(biāo)準(zhǔn)頭文件名 PRE05-C.理解連接標(biāo)記或執(zhí)行字符串化時(shí)的宏替換 PRE06-C.把頭文件放在包含防護(hù)條件中 PRE07-C.避免使用連續(xù)的問(wèn)號(hào) PRE08-C.保證頭文件名惟一 ……第3章 聲明和初始化(DCL)第4章 表達(dá)式(EXP)第5章 整數(shù)(INP)第6章 浮點(diǎn)數(shù)第7章 數(shù)組第8章 字符和字符串第9章 內(nèi)存管理第10章 輸入/輸出第11章 環(huán)境第12章 信號(hào)第13章 錯(cuò)誤處理第14章 其他附錄
章節(jié)摘錄
本標(biāo)準(zhǔn)中的規(guī)則可以用特定組織的規(guī)則進(jìn)行擴(kuò)展,但是后者必須遵循本標(biāo)準(zhǔn)中的規(guī)則,以實(shí)現(xiàn)與本標(biāo)準(zhǔn)的順應(yīng)性?! ≤浖I(yè)人員可以通過(guò)培訓(xùn),理解如何正確地應(yīng)用安全編碼標(biāo)準(zhǔn)。通過(guò)考試,這些經(jīng)過(guò)培訓(xùn)的程序員可以認(rèn)證為安全編碼專業(yè)人員?! ‘?dāng)一種安全編碼標(biāo)準(zhǔn)確立之后,可以開(kāi)發(fā)或修改一些工具,以確定與標(biāo)準(zhǔn)的順應(yīng)性。編碼實(shí)踐中的某個(gè)條件是否可以看成是規(guī)則取決于是否可以驗(yàn)證它的順應(yīng)性。驗(yàn)證可以手工進(jìn)行,也可以用自動(dòng)化工具完成。手工驗(yàn)證不僅需要很大的工作量,而且很容易出錯(cuò)。工具驗(yàn)證也存在問(wèn)題,由于可能存在回歸錯(cuò)誤,所以靜態(tài)分析工具檢測(cè)規(guī)則的所有偏離的能力必須在每個(gè)產(chǎn)品發(fā)布中都得到證明。即使面臨這些挑戰(zhàn),自動(dòng)化驗(yàn)證仍然是經(jīng)濟(jì)上惟一可行的用于驗(yàn)證編碼標(biāo)準(zhǔn)順應(yīng)性的解決方案?! ≤浖治龉ぞ呖梢哉J(rèn)證為能夠驗(yàn)證與這個(gè)安全編碼標(biāo)準(zhǔn)的順應(yīng)性。順應(yīng)性軟件系統(tǒng)可以由一個(gè)得到適當(dāng)授權(quán)的認(rèn)證機(jī)構(gòu)通過(guò)使用認(rèn)證工具認(rèn)證為是順應(yīng)性的。系統(tǒng)質(zhì)量 安全性是在選擇和應(yīng)用編碼標(biāo)準(zhǔn)時(shí)必須考慮的系統(tǒng)屬性之一。其他需要考慮的屬性還有可移植性、可靠性、可用性、可維護(hù)性、可讀性和性能等?! ≡谶@些屬性中,有許多屬性以有趣的方式相互關(guān)聯(lián)。例如,可讀性是可維護(hù)性的一個(gè)屬性,它們對(duì)于在維護(hù)時(shí)防止產(chǎn)生可能導(dǎo)致安全漏洞或可靠性問(wèn)題的缺陷是極為重要的。另外,可讀性有助于提高代碼的檢查效率??煽啃院涂捎眯远家筮m當(dāng)?shù)馁Y源管理,與系統(tǒng)的安全密切相關(guān)。像性能和安全這樣的系統(tǒng)屬性常常存在沖突,需要考慮兩者之間的權(quán)衡。 這個(gè)安全編碼標(biāo)準(zhǔn)的目的是提高軟件的安全性。但是,由于安全性和其他系統(tǒng)屬性之間的關(guān)系,主要針對(duì)其他系統(tǒng)屬性的建議對(duì)于系統(tǒng)的安全性往往也具有重要的意義。
媒體關(guān)注與評(píng)論
“我是CERT安全編碼活動(dòng)的熱情支持者。程序員可以找到關(guān)于正確性、清晰性、可維護(hù)性、性能等方面的很多建議,但對(duì)于特定的語(yǔ)言特性如何影響安全性方式的建議則明顯缺乏。本書(shū)填補(bǔ)了這個(gè)空白。” ——RandyMeyers,ANSIC主席 “在過(guò)去的幾年里,我們依賴于CERT/CC公布各種建議,它們記錄了無(wú)盡的安全問(wèn)題。現(xiàn)在,CERT已經(jīng)匯集了前沿技術(shù)專家的建議,向程序員和項(xiàng)目經(jīng)理提供了實(shí)用的指導(dǎo)方針,避免在新的應(yīng)用程序中出現(xiàn)這些問(wèn)題,并幫助實(shí)現(xiàn)安全的遺留系統(tǒng)。干得好!” ——ThomasPlum,PlumHall,Inc.創(chuàng)始人 “互聯(lián)網(wǎng)的存在極大地增加了對(duì)安全、防黑客應(yīng)用程序的需要。通過(guò)組合這個(gè)CERT標(biāo)準(zhǔn)和其他安全指導(dǎo)方針,顧客可以獲得全面的保護(hù)以及創(chuàng)建零缺陷軟件的方法?!薄 狢hrisTapp,領(lǐng)域應(yīng)用程序工程師,LDRALtd “我覺(jué)得這個(gè)標(biāo)準(zhǔn)是無(wú)可代替的,它匯集了許多專家信息,讓我們了解現(xiàn)代的軟件系統(tǒng)在實(shí)踐中是如何失敗的。它是創(chuàng)建一個(gè)國(guó)際安全編碼指導(dǎo)方針的良好起點(diǎn)。其他地方找不到這樣的信息。就軟件安全這個(gè)問(wèn)題而言,你不知道的東西常常會(huì)給你帶來(lái)傷害?!薄 狫ohnMcDonald,《TheArtofSoftwareSecurityAssessment》的作者之一
編輯推薦
一本重要的桌面參考手冊(cè),記錄了《CERTC安全編碼標(biāo)準(zhǔn)》的第一次官方發(fā)布 每一位C程序員的案頭必備 內(nèi)容新穎,講解詳盡 實(shí)現(xiàn)C安全編程的權(quán)威指南
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版