C安全編碼標(biāo)準(zhǔn)

出版時(shí)間:2010-1  出版社:機(jī)械工業(yè)出版社  作者:Robert C. Seacord  頁數(shù):496  譯者:徐波  
Tag標(biāo)簽:無  

前言

  在C編程語言中,安全編碼的一個(gè)本質(zhì)要素是具有良好文檔的、可實(shí)行的編碼標(biāo)準(zhǔn)。編碼標(biāo)準(zhǔn)鼓勵(lì)程序員遵循一組根據(jù)項(xiàng)目或組織的要求所確定的統(tǒng)一指導(dǎo)方針,而不是根據(jù)程序員的熟悉或偏好來作出決定。編碼標(biāo)準(zhǔn)一經(jīng)確立之后,就可以作為標(biāo)尺,對(duì)源代碼進(jìn)行評(píng)估(使用手工或自動(dòng)的過程)。  《CERTc安全編碼標(biāo)準(zhǔn)》(TleCERTCSecureCodingStandard)提供了在c編程語言中進(jìn)行安全編碼的指導(dǎo)方針。這些指導(dǎo)方針的目標(biāo)是消除不安全的編碼實(shí)踐以及可能被利用而導(dǎo)致潛在風(fēng)險(xiǎn)的未定義行為。在開發(fā)代碼時(shí)遵循這些標(biāo)準(zhǔn)將會(huì)產(chǎn)生高質(zhì)量的軟件系統(tǒng),使它們具有更健壯的行為,對(duì)攻擊的抵抗性也更強(qiáng)?! ”緲?biāo)準(zhǔn)受到軟件工程協(xié)會(huì)(SEI)和其他得到許可的伙伴培訓(xùn)部門的支持,并可以作為全球信息保證認(rèn)證(GIAC)安全軟件程序員一c(GSSP-C)考試和認(rèn)證的基礎(chǔ)。安全軟件的需求  1988年11月發(fā)生的Morris蠕蟲事件導(dǎo)致10%的Internet系統(tǒng)中止,并使人們對(duì)安全軟件系統(tǒng)有了一個(gè)新的、準(zhǔn)確的認(rèn)識(shí)。20年后,許多安全分析師、軟件開發(fā)人員、軟件用戶和策略制定者都在問同一個(gè)問題:“為什么軟件不能變得更安全?”  首要的問題是“軟件安全”這個(gè)術(shù)語用在當(dāng)今已經(jīng)沒有意義。和其他人一樣,我也試圖定義這個(gè)術(shù)語,但是并不存在被廣泛接受的定義。這是為什么呢?  人們已經(jīng)提出了軟件不能變得更安全的各種原因:工具不夠充足、程序員缺乏足夠的培訓(xùn)、開發(fā)周期太短等。但是,這些都是可以克服的問題。問題的根源在于其他方面?! ≤浖荒茏兊酶踩脑蚴侨鄙賹?duì)安全軟件的需要。簡單地說,如果一家開發(fā)商已經(jīng)推出了一種功能更豐富、性能更出色的產(chǎn)品,而另一家開發(fā)商卻提供了一種雖然安全但功能和性能稍差的產(chǎn)品,并且6個(gè)月之后才能上市。毫無疑問,顧客會(huì)購買第一種產(chǎn)品,生產(chǎn)商也深知這一點(diǎn)。  為什么顧客不愿購買安全產(chǎn)品呢?這是由于“安全”這個(gè)詞在這種情況下是沒有意義的。顧客為什么要放棄看得到的好處,而去購買一種定義不明確的、不可觸摸的屬性呢?  本編碼標(biāo)準(zhǔn)就致力于解決這個(gè)問題。雖然在開發(fā)代碼時(shí)遵循這個(gè)標(biāo)準(zhǔn)并不保證軟件系統(tǒng)的安全性,但是它向我們提供了大量與代碼的質(zhì)量和安全有關(guān)的知識(shí)。它告訴我們?cè)陂_發(fā)軟件時(shí)應(yīng)該遵循一組由該領(lǐng)域的前沿專家所開發(fā)的行業(yè)標(biāo)準(zhǔn)的規(guī)則和建議。它還告訴我們?cè)陂_發(fā)軟件時(shí)遵循這個(gè)標(biāo)準(zhǔn)可以使我們把注意力和精力集中在編寫代碼上,而不會(huì)受到一些常見的編碼錯(cuò)誤的困擾。在過去的20年里,CERT協(xié)作中心已經(jīng)接到報(bào)告并發(fā)表了無數(shù)由于這些編碼錯(cuò)誤導(dǎo)致的潛在風(fēng)險(xiǎn)。它告訴我們生產(chǎn)代碼的軟件開發(fā)人員對(duì)違反這個(gè)標(biāo)準(zhǔn)可能導(dǎo)致并被利用的各種潛在風(fēng)險(xiǎn)具有深入的理解,因此在開發(fā)軟件時(shí)頭腦中已經(jīng)形成了真正的安全思想。  因此,我們?cè)诒緯幸呀?jīng)著手處理的一個(gè)“小”問題是改變開發(fā)和購買軟件系統(tǒng)的市場動(dòng)態(tài)。通過為C語言程序產(chǎn)生一個(gè)“可供行動(dòng)參考的和可測(cè)量的”定義,即遵循這個(gè)標(biāo)準(zhǔn)中的規(guī)則和建議。我們定義了一種機(jī)制,顧客可以通過這種機(jī)制來要求安全的軟件系統(tǒng),而生產(chǎn)商也可以根據(jù)這種機(jī)制來滿足顧客的要求。

內(nèi)容概要

本書提供了在C編程語言中進(jìn)行安全編碼的指導(dǎo)方針,描述了C語言程序中導(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ù)溢出和常見的軟件潛在風(fēng)險(xiǎn)的關(guān)鍵編碼錯(cuò)誤,從而創(chuàng)建更健壯的高質(zhì)量軟件系統(tǒng)?! ”緯鴥?nèi)容新穎,講解詳盡,可作為軟件開發(fā)技術(shù)人員的參考用書?! ≤浖踩詫?duì)于公司的運(yùn)作和財(cái)富具有很大的影響,與個(gè)人的生活也息息相關(guān)。為了創(chuàng)建安全的軟件,開發(fā)人員必須知道什么地方存在危險(xiǎn)。C的安全編碼要比許多經(jīng)驗(yàn)豐富的程序員所想像的更為困難。  本書是一本重要的桌面參考手冊(cè),記錄了《CERT C安全編碼標(biāo)準(zhǔn)》的第一次官方發(fā)布。這個(gè)標(biāo)準(zhǔn)逐項(xiàng)描述了C語言程序中導(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ù)溢出和常見的軟件潛在風(fēng)險(xiǎn)的關(guān)鍵編碼錯(cuò)誤。

作者簡介

  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本書,并發(fā)表了40余篇有關(guān)軟件安全、基于組件的軟件工程、基于Web的系統(tǒng)設(shè)計(jì)、遺留系統(tǒng)的現(xiàn)代化、組件倉庫、搜索引擎以及用戶界面設(shè)計(jì)和開發(fā)的論文。Rob.ert于1982年開始在IBM做一名專業(yè)的程序員,致力于通信和操作系統(tǒng)軟件開發(fā)、處理器開發(fā)和軟件工程。Robea還在XConsortium工作過,為通用桌面環(huán)境和XWindow系統(tǒng)開發(fā)和維護(hù)代碼。他是CarnegieMellon大學(xué)在PL22.11(ANSI“C”)的代表,并且是c編程語言的JTCl/SC22/WGl4國際標(biāo)準(zhǔn)化工作組的一位技術(shù)專家。

書籍目錄

關(guān)于作者.前言第1章 本標(biāo)準(zhǔn)使用說明系統(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ù)的問號(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)性。  軟件專業(yè)人員可以通過培訓(xùn),理解如何正確地應(yīng)用安全編碼標(biāo)準(zhǔn)。通過考試,這些經(jīng)過培訓(xùn)的程序員可以認(rèn)證為安全編碼專業(yè)人員。  當(dāng)一種安全編碼標(biāo)準(zhǔn)確立之后,可以開發(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)證也存在問題,由于可能存在回歸錯(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)通過使用認(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)致安全漏洞或可靠性問題的缺陷是極為重要的。另外,可讀性有助于提高代碼的檢查效率??煽啃院涂捎眯远家筮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ì)于特定的語言特性如何影響安全性方式的建議則明顯缺乏。本書填補(bǔ)了這個(gè)空白?!薄  猂andyMeyers,ANSIC主席  “在過去的幾年里,我們依賴于CERT/CC公布各種建議,它們記錄了無盡的安全問題。現(xiàn)在,CERT已經(jīng)匯集了前沿技術(shù)專家的建議,向程序員和項(xiàng)目經(jīng)理提供了實(shí)用的指導(dǎo)方針,避免在新的應(yīng)用程序中出現(xiàn)這些問題,并幫助實(shí)現(xiàn)安全的遺留系統(tǒng)。干得好!”  ——ThomasPlum,PlumHall,Inc.創(chuàng)始人  “互聯(lián)網(wǎng)的存在極大地增加了對(duì)安全、防黑客應(yīng)用程序的需要。通過組合這個(gè)CERT標(biāo)準(zhǔn)和其他安全指導(dǎo)方針,顧客可以獲得全面的保護(hù)以及創(chuàng)建零缺陷軟件的方法?!薄  狢hrisTapp,領(lǐng)域應(yīng)用程序工程師,LDRALtd  “我覺得這個(gè)標(biāo)準(zhǔn)是無可代替的,它匯集了許多專家信息,讓我們了解現(xiàn)代的軟件系統(tǒng)在實(shí)踐中是如何失敗的。它是創(chuàng)建一個(gè)國際安全編碼指導(dǎo)方針的良好起點(diǎn)。其他地方找不到這樣的信息。就軟件安全這個(gè)問題而言,你不知道的東西常常會(huì)給你帶來傷害?!薄  狫ohnMcDonald,《TheArtofSoftwareSecurityAssessment》的作者之一

編輯推薦

  一本重要的桌面參考手冊(cè),記錄了《CERTC安全編碼標(biāo)準(zhǔn)》的第一次官方發(fā)布  每一位C程序員的案頭必備  內(nèi)容新穎,講解詳盡  實(shí)現(xiàn)C安全編程的權(quán)威指南

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    C安全編碼標(biāo)準(zhǔn) PDF格式下載


用戶評(píng)論 (總計(jì)8條)

 
 

  •   由于在學(xué)習(xí)過程中有些過程可能沒注意,導(dǎo)致很多人在寫代碼過程中犯了某些錯(cuò)誤或?qū)懗鑫kU(xiǎn)的代碼而自己還不知道,看一看這本書(就如C++的《C++Exceptional》和《Effective C++》)提醒著我們注意相關(guān)危險(xiǎn)的編程方法,對(duì)于做項(xiàng)目是避免一些麻煩很有好處!
    翻譯質(zhì)量嘛也尚算可以,暫時(shí)還沒發(fā)現(xiàn)翻譯得非常難以理解的地方!
  •   這個(gè)搞嵌入式的要在案頭放一本。。特別是軟件公司更不能少。。。標(biāo)準(zhǔn),量規(guī)。。
  •   部門買了n本
  •   安全編碼標(biāo)準(zhǔn),里面說了應(yīng)該怎樣做和為什么這樣做,很好。收獲頗多。
  •   讓你提高C代碼的質(zhì)量的書籍
  •   給實(shí)驗(yàn)室購買的,作為震室之寶.書寫的有點(diǎn)細(xì),主要是語法及C寫法規(guī)范方面的東西.
  •   裝訂太差了,跟人家郵電出版社學(xué)學(xué)啊。
  •   書挺實(shí)用的,很不錯(cuò)。
 

250萬本中文圖書簡介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7