C安全編碼標準

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

前言

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

內(nèi)容概要

本書提供了在C編程語言中進行安全編碼的指導方針,描述了C語言程序中導致軟件潛在風險根源的編碼錯誤,并根據(jù)嚴重性、被利用的可能性以及修補成本設置了優(yōu)先級。每個指導方針提供了不安全代碼的例子以及安全的替代方案。如果統(tǒng)一應用這些指導方針,可幫助消除導致緩沖區(qū)溢出、格式字符串潛在風險、整數(shù)溢出和常見的軟件潛在風險的關(guān)鍵編碼錯誤,從而創(chuàng)建更健壯的高質(zhì)量軟件系統(tǒng)?! ”緯鴥?nèi)容新穎,講解詳盡,可作為軟件開發(fā)技術(shù)人員的參考用書?! ≤浖踩詫τ诠镜倪\作和財富具有很大的影響,與個人的生活也息息相關(guān)。為了創(chuàng)建安全的軟件,開發(fā)人員必須知道什么地方存在危險。C的安全編碼要比許多經(jīng)驗豐富的程序員所想像的更為困難?! ”緯且槐局匾淖烂鎱⒖际謨?,記錄了《CERT C安全編碼標準》的第一次官方發(fā)布。這個標準逐項描述了C語言程序中導致軟件潛在風險根源的編碼錯誤,并根據(jù)嚴重性、被利用的可能性以及修補成本設置了優(yōu)先級。每個指導方針提供了不安全代碼的例子以及安全的替代方案。如果統(tǒng)一應用這些指導方針,可以消除可能導致緩沖區(qū)溢出、格式字符串潛在風險、整數(shù)溢出和常見的軟件潛在風險的關(guān)鍵編碼錯誤。

作者簡介

  RobertC.Seacord,在位于賓夕法尼亞州匹茲堡市的軟件工程協(xié)會(SEI)的CERT小組倡導了安全編碼活動。除了其他與安全相關(guān)的活動,CERT還定期分析軟件潛在風險報告,并評估它們對Intemet和其他關(guān)鍵的基礎結(jié)構(gòu)的風險。Robea是CarnegieMellon大學計算機科學系和信息網(wǎng)絡協(xié)會的助理教授,并在Pittsburgh大學兼職。作為一名電子技術(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)設計、遺留系統(tǒng)的現(xiàn)代化、組件倉庫、搜索引擎以及用戶界面設計和開發(fā)的論文。Rob.ert于1982年開始在IBM做一名專業(yè)的程序員,致力于通信和操作系統(tǒng)軟件開發(fā)、處理器開發(fā)和軟件工程。Robea還在XConsortium工作過,為通用桌面環(huán)境和XWindow系統(tǒng)開發(fā)和維護代碼。他是CarnegieMellon大學在PL22.11(ANSI“C”)的代表,并且是c編程語言的JTCl/SC22/WGl4國際標準化工作組的一位技術(shù)專家。

書籍目錄

關(guān)于作者.前言第1章 本標準使用說明系統(tǒng)質(zhì)量  自動生成的代碼  順應性 第2章 預處理器(PRE)  建議和規(guī)則  風險評估匯總  相關(guān)規(guī)則和建議  PRE00-C.用內(nèi)聯(lián)函數(shù)或靜態(tài)函數(shù)代替與函數(shù)相似的宏  PRE01-C.在宏參數(shù)名兩邊加上括號  PRE02-C.宏替換列表應該加上括號  PRE03-C.應該使用typedef定義編碼類型  PRE04-C.不要復用標準頭文件名  PRE05-C.理解連接標記或執(zhí)行字符串化時的宏替換  PRE06-C.把頭文件放在包含防護條件中  PRE07-C.避免使用連續(xù)的問號  PRE08-C.保證頭文件名惟一  ……第3章 聲明和初始化(DCL)第4章 表達式(EXP)第5章 整數(shù)(INP)第6章 浮點數(shù)第7章 數(shù)組第8章 字符和字符串第9章 內(nèi)存管理第10章 輸入/輸出第11章 環(huán)境第12章 信號第13章 錯誤處理第14章 其他附錄

章節(jié)摘錄

  本標準中的規(guī)則可以用特定組織的規(guī)則進行擴展,但是后者必須遵循本標準中的規(guī)則,以實現(xiàn)與本標準的順應性?! ≤浖I(yè)人員可以通過培訓,理解如何正確地應用安全編碼標準。通過考試,這些經(jīng)過培訓的程序員可以認證為安全編碼專業(yè)人員?! ‘斠环N安全編碼標準確立之后,可以開發(fā)或修改一些工具,以確定與標準的順應性。編碼實踐中的某個條件是否可以看成是規(guī)則取決于是否可以驗證它的順應性。驗證可以手工進行,也可以用自動化工具完成。手工驗證不僅需要很大的工作量,而且很容易出錯。工具驗證也存在問題,由于可能存在回歸錯誤,所以靜態(tài)分析工具檢測規(guī)則的所有偏離的能力必須在每個產(chǎn)品發(fā)布中都得到證明。即使面臨這些挑戰(zhàn),自動化驗證仍然是經(jīng)濟上惟一可行的用于驗證編碼標準順應性的解決方案?! ≤浖治龉ぞ呖梢哉J證為能夠驗證與這個安全編碼標準的順應性。順應性軟件系統(tǒng)可以由一個得到適當授權(quán)的認證機構(gòu)通過使用認證工具認證為是順應性的。系統(tǒng)質(zhì)量  安全性是在選擇和應用編碼標準時必須考慮的系統(tǒng)屬性之一。其他需要考慮的屬性還有可移植性、可靠性、可用性、可維護性、可讀性和性能等?! ≡谶@些屬性中,有許多屬性以有趣的方式相互關(guān)聯(lián)。例如,可讀性是可維護性的一個屬性,它們對于在維護時防止產(chǎn)生可能導致安全漏洞或可靠性問題的缺陷是極為重要的。另外,可讀性有助于提高代碼的檢查效率。可靠性和可用性都要求適當?shù)馁Y源管理,與系統(tǒng)的安全密切相關(guān)。像性能和安全這樣的系統(tǒng)屬性常常存在沖突,需要考慮兩者之間的權(quán)衡?! ∵@個安全編碼標準的目的是提高軟件的安全性。但是,由于安全性和其他系統(tǒng)屬性之間的關(guān)系,主要針對其他系統(tǒng)屬性的建議對于系統(tǒng)的安全性往往也具有重要的意義。

媒體關(guān)注與評論

  “我是CERT安全編碼活動的熱情支持者。程序員可以找到關(guān)于正確性、清晰性、可維護性、性能等方面的很多建議,但對于特定的語言特性如何影響安全性方式的建議則明顯缺乏。本書填補了這個空白。”  ——RandyMeyers,ANSIC主席  “在過去的幾年里,我們依賴于CERT/CC公布各種建議,它們記錄了無盡的安全問題?,F(xiàn)在,CERT已經(jīng)匯集了前沿技術(shù)專家的建議,向程序員和項目經(jīng)理提供了實用的指導方針,避免在新的應用程序中出現(xiàn)這些問題,并幫助實現(xiàn)安全的遺留系統(tǒng)。干得好!”  ——ThomasPlum,PlumHall,Inc.創(chuàng)始人  “互聯(lián)網(wǎng)的存在極大地增加了對安全、防黑客應用程序的需要。通過組合這個CERT標準和其他安全指導方針,顧客可以獲得全面的保護以及創(chuàng)建零缺陷軟件的方法?!薄  狢hrisTapp,領域應用程序工程師,LDRALtd  “我覺得這個標準是無可代替的,它匯集了許多專家信息,讓我們了解現(xiàn)代的軟件系統(tǒng)在實踐中是如何失敗的。它是創(chuàng)建一個國際安全編碼指導方針的良好起點。其他地方找不到這樣的信息。就軟件安全這個問題而言,你不知道的東西常常會給你帶來傷害?!薄  狫ohnMcDonald,《TheArtofSoftwareSecurityAssessment》的作者之一

編輯推薦

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

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    C安全編碼標準 PDF格式下載


用戶評論 (總計8條)

 
 

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

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

京ICP備13047387號-7