出版時(shí)間:2010-6 出版社:清華大學(xué)出版社 作者:(美)霍華德,(美)勒布朗,(美)維維 著,董艷,包戰(zhàn),程文俊 譯 頁數(shù):306
Tag標(biāo)簽:無
前言
在應(yīng)用計(jì)算機(jī)工程領(lǐng)域中,使安全工作切實(shí)可行是我們面臨的最大挑戰(zhàn)。所有的工程系統(tǒng)都有指導(dǎo)性需求——它們已成為可測量的要素,如果達(dá)不到這些要求,系統(tǒng)就會(huì)失敗。例如,大樓必須是安全的(不能倒塌?。?,但這還不夠,大樓還必須是可用的(里面的空間可以使用)、能蓋得起來、可以維護(hù)(建筑和維護(hù)的成本必須使大樓在投入使用后可以盈利),最后,大樓還應(yīng)有一定的吸引力(大樓的外觀與其居住者的狀態(tài)以及該屬性的價(jià)值相關(guān))。每個(gè)需求都有自己的優(yōu)先級(jí),但它們必須都得到滿足。在許多應(yīng)用計(jì)算機(jī)工程領(lǐng)域中,人們不大重視安全。一些項(xiàng)目只是輕描淡寫地提到了安全,這使安全無法成為真正的工程實(shí)踐要求。這樣很糟糕。軟件的復(fù)雜性是毋庸置疑的——現(xiàn)代操作系統(tǒng),甚至是現(xiàn)代網(wǎng)絡(luò)瀏覽器,都比航天飛機(jī)復(fù)雜得多。航天飛機(jī)可以殺人,但帶有極少的幾個(gè)異常的軟件卻不會(huì)殺人。所以,安全的基本核心——“正確”,從來都沒有成為軟件的明確設(shè)計(jì)規(guī)則,更不用說成為根本的設(shè)計(jì)規(guī)則了。于是,軟件中對(duì)安全的這種漠視使我們不得不忍受大量的重復(fù)設(shè)計(jì)(往好聽了說)或錯(cuò)誤(往難聽了說)。畢竟,無論軟件編寫得多糟糕,在幾乎所有的情況下,都不會(huì)有人因此丟掉性命。破產(chǎn)則完全是另一回事,并不是只有人才會(huì)死,公司也會(huì)消亡。計(jì)算機(jī)安全研究已經(jīng)持續(xù)了數(shù)十年,但直到2000年以后,不安全軟件的后果才最終為外界所知。2003年“夏蟲”(‘Me Summer of Worms)肆虐——簡言之,幾個(gè)惡意操作使整個(gè)商業(yè)界的IT資源完全不可靠達(dá)到3個(gè)月之久,2006年出了TJX事件——攻擊者利用無線天線光顧了T.J.Maxx,盜走了大量的信用卡賬戶。2008年,攻擊率再創(chuàng)新高,據(jù)Vefizon.Business報(bào)告,2008年受到威脅的個(gè)人財(cái)務(wù)記錄超過了2004、2005、2006和2007年的總和。人們?nèi)詻]有醒悟?!罢_”還是沒有受到人們的重視,卻得到寄生蟲的青睞——這些壞家伙遠(yuǎn)程闖入系統(tǒng),利用不正確的代碼繞過安全設(shè)施、盜取財(cái)物。對(duì)于用戶和公司來說,這都是一個(gè)非常顯著的問題。事情這么糟糕,而工程師看到了什么?一天結(jié)束時(shí),地位低的開發(fā)人員必須把他聽到的所有命令都轉(zhuǎn)換為代碼。軟件有許多工程要求:性能、可用性、可靠性等。這些要求都有一個(gè)非常重要的特點(diǎn):如果這些要求沒有滿足,它們就會(huì)變成非常明顯的問題??墒?,安全問題卻沒有那么明顯??紤]下面的情形:假定軟件有一個(gè)性能問題。甚至未受過培訓(xùn)的工程師都會(huì)注意到,某個(gè)操作需要執(zhí)行很長時(shí)間。為了解決這個(gè)問題,工程師可以使用標(biāo)準(zhǔn)的數(shù)據(jù)集,找出運(yùn)行過于頻繁的代碼塊。
內(nèi)容概要
軟件安全是一個(gè)不斷變化的主題,不僅不斷出現(xiàn)新的漏洞類型,而且出現(xiàn)了漏洞的各種變體.本書總結(jié)了目前最危險(xiǎn)的24個(gè)安全漏洞,給出了豐富的漏洞示例,并且提供了相應(yīng)的修復(fù)措施。 ● 各種Web應(yīng)用程序漏洞及修復(fù)措施 ● 各種實(shí)現(xiàn)漏洞及修復(fù)措施 ● 各種加密漏洞及修復(fù)措施 ● 各種聯(lián)網(wǎng)漏洞及修復(fù)措施
作者簡介
作者:(美國)Michael Howard (美國)David LeBlanc (美國)John Viega 譯者:董艷 包戰(zhàn) 程文俊Michael Howard是Microsoft公司Trustworthy Computing(TWC)Group(可信賴計(jì)算組)下屬安全工程組的高級(jí)安全項(xiàng)目經(jīng)理,負(fù)責(zé)管理整個(gè)公司的安全設(shè)計(jì)、編程和測試技術(shù)。Howard是一位Security Development Lifecycle(SDL)構(gòu)建師,SDL是一個(gè)提高微軟軟件安全性的過程。Howard于1992年開始在微軟公司工作,那時(shí)他在微軟公司的新西蘭分部,剛開始的前兩年在產(chǎn)品支持服務(wù)小組為Windows和編譯器提供技術(shù)支持,接著為MicrosoftConsulting Services提供技術(shù)支持,在此階段,他為客戶提供安全基礎(chǔ)架構(gòu)支持,并幫助設(shè)計(jì)定制的解決方案和軟件開發(fā)。1997年,Howard調(diào)到美國,為微軟的Web服務(wù)程序InternetInformation Services的Windows分部工作,2000年開始擔(dān)任目前的工作。Howard是IEEE Security&Privacy一書的編輯,經(jīng)常在與安全相關(guān)的會(huì)議上發(fā)言,定期發(fā)表安全編碼和設(shè)計(jì)方面的文章。Howard與他人一起編寫了6本安全圖書,包括獲獎(jiǎng)書籍Writing Secure Code(第二版,Microsoft Press,2003年1、19 Deadly Sins ofSoftware Security(McGraw.Hill Professional出版社,2005年)、The Security Development Llyecycle(MicrosoftPress,2006年),最近出版的圖書Writing Secure Code for WindoWS Vista(Microsoft Press,2007年)。David LeBlanc博士目前是Microsoft Office Trustworthy Computing工作組的一位主要軟件開發(fā)工程師,負(fù)責(zé)設(shè)計(jì)和實(shí)現(xiàn)Microsoft Office中的安全技術(shù)。他還給其他開發(fā)人員提供安全編程技術(shù)方面的建議。自從1999年加入微軟公司以來,他一直負(fù)責(zé)操作網(wǎng)絡(luò)安全,還是可信賴主動(dòng)計(jì)算(Trustworthy computing Initiative)的創(chuàng)始人之一。David與他人合著了獲獎(jiǎng)書籍WritingSecure Code(第二版,MicrosoftPress,2003年)、19 Deadly Sins of Software Security(McGraw-Hill Professional出版社,2005年)、WritingSecure Code for WindoWS Vista(Microsoft Press,2007年1,還發(fā)表了許多文章。 John Viega是McAfee的SaaS Business Unit的CTO,是19 deadly programmingflaws一書的作者,這本書引起了出版社和媒體的極大關(guān)注。本書就是以該書為基礎(chǔ)的。他和其他人共同編寫了許多其他關(guān)于軟件安全的圖書,包括Building Secure Software(Addison-Wesley Press,200 1年),Network Security with OpenSSL(O’Reilly Press,2002年),以及Myths of Security(O’Reilly Press,2009年)。他負(fù)責(zé)許多軟件安全工具,是Mailman(GNU郵件列表管理器)的第一作者,他為IEEE和IETF中的標(biāo)準(zhǔn)化做了大量的工作,還與他人一起開發(fā)了GCM(NIST已標(biāo)準(zhǔn)化的一種加密算法)。John還是幾家安全公司的安全顧問,包括Fortify和Bit9公司。他擁有Virginia大學(xué)的碩士和學(xué)士學(xué)位。
書籍目錄
第Ⅰ部分 Web應(yīng)用程序漏洞 第1章 SQL注入 1.1 漏洞概述 1.2 CWE參考 1.3 受影響的編程語言 1.4 漏洞詳述 1.4.1 關(guān)于LINQ的注意事項(xiàng) 1.4.2 受漏洞影響的C# 1.4.3 受漏洞影響的PHP 1.4.4 受漏洞影響的Perl/CGI 1.4.5 受漏洞影響的Python 1.4.6 受漏洞影響的Ruby on Rails 1.4.7 受漏洞影響的Java和JDBC 1.4.8 受漏洞影響的C/C++ 1.4.9 受漏洞影響的SQL 1.4.10 相關(guān)漏洞 1.5 查找漏洞模式 1.6 在代碼審查期間查找該漏洞 1.7 發(fā)現(xiàn)該漏洞的測試技巧 1.8 漏洞示例 1.8.1 CVE-2006.4953 1.8.2 CVE-2006.4592 1.9 彌補(bǔ)措施 1.9.1 驗(yàn)證所有的輸入 1.9.2 使用prepared語句構(gòu)造SQL語句 1.9.3 C#彌補(bǔ)措施 1.9.4 PHP5.0以及MySQL1.1或者以后版本的彌補(bǔ)措施 1.9.5 Perl/CGI彌補(bǔ)措施 1.9.6 Python彌補(bǔ)措施 1.9.7 Ruby on Rails彌補(bǔ)措施 1.9.8 使用JDBC的Java彌補(bǔ)措施 1.9.9 ColdFusion彌補(bǔ)措施 1.9.10 SQL彌補(bǔ)措施 1.10 其他防御措施 1.10.1 加密敏感數(shù)據(jù)、PII數(shù)據(jù)或機(jī)密數(shù)據(jù) 1.10.2 使用URL Scan 1.11 其他資源 1.12 本章小結(jié) 第2章 與Web服務(wù)器相關(guān)的漏洞(XSS、XSRF和響應(yīng)拆分) 2.1 漏洞概述 2.2 CWE參考 2.3 受影響的編程語言 2.4 漏洞詳述 2.4.1 基于DOM的XSS或類型 2.4.2 反射XSS,非持續(xù)XSS或類型 …… 第3章 與Web客戶端相關(guān)的漏洞(XSS) 第4章 使用Magic URL、可預(yù)計(jì)的cookie及隱藏表單字段第Ⅱ部分 實(shí)現(xiàn)漏洞 第5章 緩沖區(qū)溢出 第6章 格式化字符串的問題 第7章 整數(shù)溢出 第8章 C++災(zāi)難 第9章 捕獲異?!〉?0章 命令注入 第11章 未能正確處理錯(cuò)誤 第12章 信息泄漏 第13章 競態(tài)條件 第14章 不良可用性 第15章 不易更新 第16章 執(zhí)行代碼的權(quán)限過大 第17章 未能完全地存儲(chǔ)數(shù)據(jù) 第18章 移動(dòng)代碼的漏洞第Ⅲ部分 加密漏洞 第19章 使用基于弱密碼的系統(tǒng) 第20章 弱隨機(jī)數(shù) 第21章 使用錯(cuò)誤的密碼技術(shù)第Ⅳ部分 隧網(wǎng)漏洞 第22章 未能保護(hù)好網(wǎng)絡(luò)通信 第23章 未能正確使用PKI,尤其是SSL 第24章 輕信網(wǎng)絡(luò)域名解析
章節(jié)摘錄
插圖:第1章SQL注入1.1 漏洞概述SQL注入是一種非常嚴(yán)重的代碼漏洞,它可以導(dǎo)致機(jī)器被入侵,敏感數(shù)據(jù)泄漏,最近,這種漏洞還會(huì)傳播惡意軟件。而真正讓人擔(dān)心的是:受這些漏洞影響的系統(tǒng)通常都是電子商務(wù)系統(tǒng)或用來處理敏感數(shù)據(jù)或PII(personallyidentifiableinformation,個(gè)人身份信息)的應(yīng)用程序。從作者的經(jīng)驗(yàn)來看,許多家用或者商用的數(shù)據(jù)庫驅(qū)動(dòng)應(yīng)用程序都會(huì)有SQL注入的漏洞。下面將清晰闡述這個(gè)漏洞的潛在威脅。如果所建立的應(yīng)用程序與數(shù)據(jù)庫通信,且代碼中有一個(gè)或多個(gè)SQL注入漏洞(無論您知道與否),就會(huì)把數(shù)據(jù)庫中的所有數(shù)據(jù)置于危險(xiǎn)之中。如果不明白這句話的含義,請(qǐng)繼續(xù)閱讀。有時(shí),即使沒有SQL注入漏洞,數(shù)據(jù)也會(huì)被入侵。入侵?jǐn)?shù)據(jù)庫的一種常見方式是通過打開如下數(shù)據(jù)庫端口,例如:·MicrosoftSQLServer的TCP/1433端口·Oracle的TCP/1521端口·IBMDB2的TCP/523的端口·MySQL的TCP/3306端口而進(jìn)入一直處于打開狀態(tài)的前門。如果這些端口對(duì)Internet是開放的,則使用默認(rèn)的系統(tǒng)管理員賬戶登錄,很可能會(huì)引發(fā)災(zāi)難。有數(shù)據(jù)就是有DATA。SQL注入攻擊的一個(gè)最大危害是攻擊者可以獲得隱私、PII或者敏感數(shù)據(jù)。攻擊者不需要使用系統(tǒng)管理員的身份,就可以盜取數(shù)據(jù)。在一些國家、州或者工作單位里.如果發(fā)生了這種情況,當(dāng)事人要負(fù)相應(yīng)的責(zé)任。例如,在加利福尼亞州,如果您負(fù)責(zé)的數(shù)據(jù)庫被入侵,而數(shù)據(jù)庫含有隱私或者個(gè)人數(shù)據(jù),那么OnlinePrivacyProtectionAct(在線隱私保護(hù)法案)可能會(huì)讓您吃官司;在德國,§9BDSG(FederalDataProtectionAct,聯(lián)邦數(shù)據(jù)保護(hù)法案)要求為處理PII的系統(tǒng)提供恰當(dāng)?shù)慕M織上和技術(shù)上的安全保護(hù)。
媒體關(guān)注與評(píng)論
《軟件安全的24宗罪——編程缺陷與修復(fù)之道》是由兩位業(yè)界經(jīng)驗(yàn)最豐富的專家撰寫通過學(xué)習(xí)本書中給出的實(shí)踐經(jīng)驗(yàn),讀者就能夠理解編寫安全代碼的具體含義.MichaelHoward和David LeBlanc在本書中展示了如何解決若干年前發(fā)布的代碼出現(xiàn)的問題?! 狣an Kaminsky,IOActive滲透測試主管。
編輯推薦
《軟件安全的24宗罪:編程缺陷與修復(fù)之道》介紹了最新的安全問題,指出了最常見的設(shè)計(jì)和編碼錯(cuò)誤,解釋了如何修復(fù)每個(gè)漏洞——更美妙的是,如何從一開始就避免出現(xiàn)這些錯(cuò)誤?!盾浖踩?4宗罪:編程缺陷與修復(fù)之道》的作者M(jìn)ichael Howard和David LeBlanc曾教授微軟員工如何保護(hù)代碼,他們與第一個(gè)發(fā)現(xiàn)19個(gè)致命編程漏洞的John Viega合作,探討了最新的漏洞,并且增加了5個(gè)全新的漏洞。這本實(shí)踐指南涵蓋了所有的平臺(tái)、語言和應(yīng)用程序類型。由著名軟件安全專家編寫的安全漏洞專業(yè)書籍,發(fā)現(xiàn)和修復(fù)各種安全漏洞的最佳指導(dǎo),豐富的安全漏洞示例以及修復(fù)措施,作者長期實(shí)踐經(jīng)驗(yàn)的總結(jié)。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載