注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)信息安全編寫(xiě)安全的代碼

編寫(xiě)安全的代碼

編寫(xiě)安全的代碼

定 價(jià):¥49.00

作 者: (美)Michael Howard,(美)David LeBlanc著;程永敬[等]譯;程永敬譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng): 微軟公司核心技術(shù)書(shū)庫(kù)
標(biāo) 簽: 綜合 安全與加密 計(jì)算機(jī)與互聯(lián)網(wǎng)

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787111102854 出版時(shí)間: 2002-08-01 包裝: 平裝
開(kāi)本: 24cm+光盤(pán)1片 頁(yè)數(shù): 345 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  對(duì)于“是否有這個(gè)必要”的疑問(wèn),在書(shū)中(第1章)作者是如此回答的:首先,時(shí)代在變,從“World Wide Web”(萬(wàn)維網(wǎng))到“Wild Wild Web”(混亂無(wú)序的網(wǎng))絕非文字游戲。在如今這個(gè)充滿了敵意的網(wǎng)絡(luò)環(huán)境里面,編寫(xiě)的代碼必須經(jīng)得起考驗(yàn),而再用舊的思維模式去思考新的問(wèn)題是非常危險(xiǎn)的。其次,安全的產(chǎn)品同時(shí)也是高質(zhì)量的產(chǎn)品,安全是高質(zhì)量產(chǎn)品的一個(gè)子集。再次,媒體和競(jìng)爭(zhēng)對(duì)手都喜歡在安全問(wèn)題上大做文章,這些都是能上頭條新聞的信息,屢屢成為犧牲品的公司不厭其煩,微軟即是一個(gè)典型的例子。最后一點(diǎn)就是,修補(bǔ)安全漏洞的代價(jià)是十分高昂的。除了直接的人力和誤工等損失之外,還包括改善公共關(guān)系和客戶信任度的降低的損失,我把它稱之為“商譽(yù)”上的損失。這四點(diǎn)從企業(yè)的角度對(duì)此做出了回答。對(duì)于個(gè)人而言,也有著種種的不解(附錄D):①?zèng)]有人會(huì)做那事?、谖覀儚膩?lái)沒(méi)有受到過(guò)攻擊。③我們使用了密碼、ACL和防火墻,所以安全。④檢查過(guò)代碼,沒(méi)有安全bug。對(duì)這些問(wèn)題,作者顯然有著豐富的實(shí)踐經(jīng)驗(yàn):①當(dāng)苦口婆心地告訴某個(gè)開(kāi)發(fā)小組一定要做緩沖溢出測(cè)試時(shí),大家顯然不相信。于是作者現(xiàn)場(chǎng)編寫(xiě)了一個(gè)Perl的小腳本,它神奇地生成了一個(gè)偽造的包,發(fā)送給產(chǎn)品打開(kāi)的Socket后,輕易地就擊潰了他們的服務(wù)器。②作者與一個(gè)產(chǎn)品開(kāi)發(fā)組工作之時(shí),對(duì)方信誓旦旦地說(shuō)他們從來(lái)沒(méi)有受到過(guò)攻擊,沒(méi)有問(wèn)題。然而就在他們被第一次攻擊之時(shí),突然就涌現(xiàn)了另外的數(shù)個(gè)安全漏洞。黑客的嗜好就是發(fā)現(xiàn)漏洞,然后廣而告之,然后繼續(xù)探查你的其他漏洞,問(wèn)題迅速擴(kuò)大化。③作者告誡大家要避免以下錯(cuò)誤:自創(chuàng)“加密”算法;不安全地存儲(chǔ)密碼;使用“任何人”的ACL。防火墻只是安全體系的一環(huán),并非全部。例如,很多攻擊都是通過(guò)HTTP,也就是一個(gè)通常開(kāi)放的端口來(lái)進(jìn)行的。④如果不知道安全bug是什么樣子,當(dāng)然就沒(méi)有那個(gè)問(wèn)題了。正如書(shū)中前言所提到的那樣,《編寫(xiě)安全的代碼》一書(shū)“教你以安全的方式設(shè)計(jì)、編寫(xiě)和測(cè)試應(yīng)用程序是本書(shū)惟一的目的”,始終圍繞著應(yīng)用程序安全的話題進(jìn)行討論,從實(shí)踐的角度對(duì)代碼安全進(jìn)行了全程的指導(dǎo)。同時(shí),這也是“第一本指導(dǎo)程序員從內(nèi)部加強(qiáng)軟件安全的書(shū)籍”,是一本主要面向程序員,涉及各種攻擊漏洞的安全分析,并指導(dǎo)人們從開(kāi)發(fā)階段即開(kāi)始加強(qiáng)軟件安全的書(shū)。在此,我把它推薦給所有關(guān)心代碼安全的朋友們閱讀。

作者簡(jiǎn)介

  Michael Howard:《Design Secure Web-Based Applications for Microsoft Windows 2000》一書(shū)的主要作者。從1992年就開(kāi)始從事Windows NT安全方面的研究。現(xiàn)在在微軟的Windows XP小組中負(fù)責(zé)安全方面的設(shè)計(jì)、編程和測(cè)試。他每年都要幫助全球上百家公司以保證他們的應(yīng)用的安全。David LeBlanc:微軟高信度計(jì)算安全性小組高級(jí)安全技術(shù)專家,安全技術(shù)方面的先鋒,他的職責(zé)是保衛(wèi)微軟網(wǎng)站免受黑客攻擊,一直從事安全領(lǐng)域方面的工作,曾因其在Internet安全系統(tǒng)方面的突出貢獻(xiàn)而獲得ISS安全產(chǎn)品獎(jiǎng)。

圖書(shū)目錄

譯者序

前言
第一部分 現(xiàn)代安全
第1章 對(duì)安全系統(tǒng)的需求 
1.1 “Wild Wild Web”上的應(yīng)用程序 
1.2 讓每個(gè)人都參與進(jìn)來(lái) 
1.2.1 利用機(jī)智使整個(gè)組織認(rèn)識(shí)到安全的重要性 
1.2.2 使用搞破壞的方法 
1.3 用來(lái)灌輸安全文化的一些思想 
1.3.1 讓老板發(fā)一封電子郵件 
1.3.2 任命安全宣傳員 
第2章 設(shè)計(jì)安全的系統(tǒng) 
2.1 兩個(gè)常見(jiàn)的安全性錯(cuò)誤 
2.2 賴以生存的安全策略 
2.2.1 建立一個(gè)安全步驟 
2.2.2 定義產(chǎn)品的安全目標(biāo) 
2.2.3 將安全性看做是產(chǎn)品的一個(gè)功能 
2.2.4 從錯(cuò)誤中吸取教訓(xùn) 
2.2.5 使用最小權(quán)限 
2.2.6 使用縱深防御 
2.2.7 假設(shè)外部系統(tǒng)是不安全的 
2.2.8 做好失效時(shí)的計(jì)劃 
2.2.9 失效時(shí)進(jìn)入安全模式 
2.2.10 選擇安全的默認(rèn)值
2.2.11 請(qǐng)記住安全性功能不等于安全的功能 
2.2.12 不要將安全建立在模糊信息上 
2.2.13 最后三個(gè)觀點(diǎn) 
2.3 用威脅模型做安全設(shè)計(jì) 
2.3.1 集體討論已經(jīng)知道的對(duì)系統(tǒng)的威脅 
2.3.2 以風(fēng)險(xiǎn)遞減的順序給威脅排序 
2.3.3 選擇對(duì)威脅做何種反應(yīng) 
2.3.4 選擇技術(shù)來(lái)緩解威脅 
2.4 安全方法 
2.4.1 認(rèn)證 
2.4.2 授權(quán) 
2.4.3 抗篡改和加強(qiáng)保密的方法 
2.4.4 保護(hù)秘密,更好的辦法是不存儲(chǔ)秘密 
2.4.5 加密、散列、MAC和數(shù)字簽名 
2.4.6 審核 
2.4.7 過(guò)濾、扼殺和服務(wù)質(zhì)量 
2.4.8 最小權(quán)限 
2.5 回到工資應(yīng)用程序范例 
2.6 豐富的威脅和解決方案 
第二部分 安全的編碼技術(shù)
第3章 頭號(hào)公敵:緩沖區(qū)溢出 
3.1 靜態(tài)緩沖區(qū)溢出 
3.2 堆溢出 
3.3 數(shù)組索引錯(cuò)誤 
3.4 格式化字符串bug 
3.5 Unicode和ANSI的緩沖區(qū)大小不匹配 
3.6 防止緩沖區(qū)溢出 
3.7 好消息 
第4章 確定有效的訪問(wèn)控制 
4.1 ACL為什么如此重要 
4.2 ACL由哪些部分組成 
4.3 選擇一種有效的ACL方法 
4.4 創(chuàng)建ACL
4.4.1 在Windows NT 4中創(chuàng)建ACL
4.4.2 在Windows 2000中創(chuàng)建ACL 
4.4.3 使用活動(dòng)模板庫(kù)創(chuàng)建ACL 
4.5 空的DACL以及其他危險(xiǎn)的ACE類型 
4.5.1 空的DACL及審核
4.5.2 危險(xiǎn)的ACE類型
4.5.3 如果不能改變空DACL的話應(yīng)該怎么辦
4.6 其他訪問(wèn)控制機(jī)制
4.6.1 IP限制
4.6.2 COM+角色
4.6.3 SQL Server觸發(fā)器和權(quán)限
4.6.4 一個(gè)醫(yī)療上的實(shí)例
4.6.5 關(guān)于訪問(wèn)控制機(jī)制的一點(diǎn)重要說(shuō)明 
第5章 使用最低權(quán)限運(yùn)行
5.1 在實(shí)際中的最低權(quán)限
5.1.1 病毒和木馬
5.1.2 破壞Web服務(wù)
5.2 訪問(wèn)控制概述
5.3 權(quán)限概述
5.3.1 SeBackupPrivilege問(wèn)題
5.3.2 SeDebugPrivilege問(wèn)題
5.3.3 SeTcbPrivilege問(wèn)題
5.3.4 SeAssignPrimaryTokenPrivilege和SeIncreaseQuotaPrivilege問(wèn)題
5.4 對(duì)令牌的簡(jiǎn)短回顧
5.5 令牌、權(quán)限、SID、ACL以及相關(guān)進(jìn)程
5.6 確定使用恰當(dāng)權(quán)限的過(guò)程 
5.6.1 步驟1:找出應(yīng)用程序所使用的資源 
5.6.2 步驟2:找出應(yīng)用程序所使用的有特權(quán)的API 
5.6.3 步驟3:需要哪個(gè)賬號(hào)
5.6.4 步驟4:獲取令牌的內(nèi)容
5.6.5 步驟5:是否所有的SID和權(quán)限都需要 
5.6.6 步驟6:調(diào)整令牌 
5.6.7 何時(shí)使用限定令牌 
5.7 Windows XP和Windows.NET Server中的低權(quán)限服務(wù)賬號(hào) 
5.8 調(diào)試的最低權(quán)限問(wèn)題 
5.8.1 為什么以普通用戶運(yùn)行的程序會(huì)失敗 
5.8.2 如何確定為什么程序會(huì)失敗 
第6章 密碼的缺陷 
6.1 使用拙劣的隨機(jī)數(shù) 
6.1.1 問(wèn)題:rand函數(shù) 
6.1.2 一種補(bǔ)救方法:CryptGenRandom 
6.2 用口令衍生出加密密鑰 
6.3 糟糕的密鑰管理 
6.4 使用你自己的加密函數(shù) 
6.5 使用相同的流密碼對(duì)密鑰加密 
6.5.1 人們?yōu)槭裁匆昧髅艽a 
6.5.2 流密碼的缺陷 
6.5.3 你“非要”使用相同的密鑰會(huì)怎么樣 
6.6 對(duì)流密碼的位替換攻擊 
6.6.1 解決位替換攻擊問(wèn)題 
6.6.2 什么時(shí)候使用散列、密鑰散列或數(shù)字簽名 
6.7 對(duì)明文和密文使用同一個(gè)緩沖區(qū) 
第7章 涉密信息的存儲(chǔ) 
7.1 攻擊方法 
7.2 有時(shí)你并不需要存儲(chǔ)秘密信息 
7.3 從用戶獲取秘密信息 
7.4 在Windows 2000和Windows XP中存儲(chǔ)秘密信息 
7.5 在Windows NT 4中存儲(chǔ)秘密信息 
7.6 在Windows 95、Windows 98、Windows Me和Windows CE中存儲(chǔ)秘密信息 
7.7 提高安全限制 
7.7.1 在FAT文件系統(tǒng)的文件中存儲(chǔ)數(shù)據(jù) 
7.7.2 利用一個(gè)嵌入密鑰和XOR來(lái)加數(shù)據(jù) 
7.7.3 利用嵌入密鑰和3DES加密數(shù)據(jù) 
7.7.4 利用3DES加密數(shù)據(jù)并在注冊(cè)表中存儲(chǔ)口令 
7.7.5 利用3DES加密數(shù)據(jù)并在注冊(cè)表中存儲(chǔ)一個(gè)強(qiáng)密鑰 
7.7.6 利用3DES加密數(shù)據(jù)、在注冊(cè)表中存儲(chǔ)一個(gè)強(qiáng)密鑰并對(duì)注冊(cè)表密鑰和文件進(jìn)行ACL處理 
7.8 一個(gè)想法:用外部設(shè)備對(duì)秘密數(shù)據(jù)加密 
7.8.1 一個(gè)應(yīng)用PPCKey的例子 
7.8.2 PPCKey威脅方式 
第8章 規(guī)范的表示問(wèn)題 
8.1 什么是規(guī)范?為什么它存在問(wèn)題 
8.2 一點(diǎn)歷史 
8.2.1 繞過(guò)AOL的家長(zhǎng)控制 
8.2.2 繞過(guò)Napster的名稱過(guò)濾 
8.2.3 繞過(guò)eEye的安全檢測(cè) 
8.2.4 蘋(píng)果機(jī)Mac OS X和Apache中的漏洞 
8.2.5 區(qū)域和IE4的“Dotless-IP Address”缺陷 
8.2.6 IIS4的::$DATA漏洞 
8.2.7 DOS驅(qū)動(dòng)名漏洞 
8.2.8 Sun 公司StarOffice /tmp目錄符號(hào)連接漏洞 
8.3 一般的Windows規(guī)范化錯(cuò)誤 
8.3.1 長(zhǎng)文件名的8.3格式表示方式 
8.3.2 NTFS的另一種數(shù)據(jù)流 
8.3.3 后綴字符 
8.3.4 \\?\格式 
8.3.5 目錄遍歷和使用父路徑(..) 
8.3.6 絕對(duì)和相對(duì)文件名 
8.3.7 不區(qū)分大小寫(xiě)的文件名 
8.3.8 設(shè)備名稱和保留名稱 
8.3.9 UNC共享 
8.4 防止規(guī)范化錯(cuò)誤的出現(xiàn) 
8.4.1 不要根據(jù)名稱來(lái)做出判斷 
8.4.2 使用正則表達(dá)式來(lái)限制名稱的權(quán)限 
8.4.3 嘗試對(duì)名字進(jìn)行規(guī)范化 
8.5 最后的思考:基于非文件的規(guī)范化問(wèn)題 
8.5.1 服務(wù)器名 
8.5.2 用戶名 
第三部分 基于網(wǎng)絡(luò)的應(yīng)用程序
第9章 Socket安全 
9.1 避免服務(wù)器被截聽(tīng) 
9.2 選擇服務(wù)器接口 
9.3 接受連接 
9.4 編寫(xiě)防火墻友好的應(yīng)用程序 
9.4.1 用一個(gè)連接工作 
9.4.2 不要要求服務(wù)器連接回客戶端 
9.4.3 使用基于連接的協(xié)議 
9.4.4 不要通過(guò)另外一個(gè)協(xié)議使你的應(yīng)用程序進(jìn)行多路復(fù)用 
9.4.5 不要在應(yīng)用層數(shù)據(jù)中嵌入主機(jī)IP地址 
9.4.6 讓你的應(yīng)用程序可配置 
9.5 欺騙、基于主機(jī)和基于端口的信任 
第10章 RPC、ActiveX控件和DCOM安全 
10.1 RPC入門(mén) 
10.1.1 什么是RPC 
10.1.2 創(chuàng)建RPC應(yīng)用程序 
10.1.3 RPC應(yīng)用程序的通信原理 
10.2 RPC安全最佳實(shí)踐 
10.2.1 使用/robust MIDL開(kāi)關(guān)參數(shù) 
10.2.2 使用[range]表征項(xiàng) 
10.2.3 要求對(duì)連接進(jìn)行驗(yàn)證 
10.2.4 使用數(shù)據(jù)包的保密性和完整性 
10.2.5 使用嚴(yán)格的上下文句柄 
10.2.6 不要依靠上下文句柄來(lái)進(jìn)行訪問(wèn)檢查 
10.2.7 注意空的上下文句柄 
10.2.8 不要信任你的對(duì)端 
10.2.9 使用安全回調(diào) 
10.2.10 在單一進(jìn)程中牽連多個(gè)RPC服務(wù)器 
10.2.11 考慮為你的終端添加一個(gè)注釋 
10.2.12 使用主流的協(xié)議 
10.3 DCOM安全最佳實(shí)踐 
10.3.1 DCOM基礎(chǔ) 
10.3.2 應(yīng)用層的安全 
10.3.3 DCOM用戶上下文環(huán)境 
10.3.4 可編程實(shí)現(xiàn)的安全性 
10.3.5 源端和接收端 
10.4 ActiveX入門(mén) 
10.5 ActiveX安全最佳實(shí)踐 
10.5.1 什么樣的ActiveX組件是可以安全用于初始化和腳本的 
10.5.2 可安全用于初始化和腳本的最佳實(shí)踐 
第11章 拒絕服務(wù)(DoS)攻擊的防范 
11.1 應(yīng)用程序失敗攻擊 
11.2 CPU資源不足攻擊 
11.3 內(nèi)存資源不足攻擊 
11.4 資源不足攻擊 
11.5 網(wǎng)絡(luò)帶寬攻擊 
第12章 基于Web服務(wù)的安全 
12.1 永遠(yuǎn)不要相信用戶的輸入 
12.1.1 用戶輸入問(wèn)題上的安全漏洞 
12.1.2 解決用戶輸入問(wèn)題的方法 
12.2位Web特有的規(guī)范化問(wèn)題 
12.2.1 7位和8位ASCII碼 
12.2.2 十六進(jìn)制轉(zhuǎn)換碼 
12.2.3 UTF-8可變寬編碼 
12.2.4 UCS-2 Unicode編碼 
12.2.5 雙重編碼 
12.2.6 HTML轉(zhuǎn)換碼 
12.2.7 對(duì)基于Web的標(biāo)準(zhǔn)化問(wèn)題的解決辦法 
12.3 其他基于Web的安全性主題 
12.3.1 HTTP信任問(wèn)題 
12.3.2 ISAPI程序和過(guò)濾器 
12.3.3 不要在Web頁(yè)中存儲(chǔ)涉密數(shù)據(jù) 
12.3.4 真的需要使用sa嗎?可能不是 
第四部分 特殊話題
第13章 編寫(xiě)安全的.NET代碼 
13.1 緩沖區(qū)溢出和CLR 
13.1.1 添加屬于你自己的安全性錯(cuò)誤處理 
13.1.2 一個(gè)事實(shí) 
13.2 在.NET中保存涉密數(shù)據(jù) 
13.3 總是要求適當(dāng)?shù)臋?quán)限 
13.4 過(guò)度使用Assert 
13.5 關(guān)于Demand和Assert的其他信息 
13.6 不要害怕拒絕權(quán)限 
13.7 對(duì)來(lái)自不可信任源的數(shù)據(jù)進(jìn)行驗(yàn)證 
13.8 ASP.NET中的線程支持問(wèn)題 
13.9 在部署ASP.NET應(yīng)用程序之前要禁用跟蹤和調(diào)試 
13.10 使用.NET Framework產(chǎn)生良好的隨機(jī)數(shù) 
13.11 對(duì)來(lái)自不可信任源的數(shù)據(jù)進(jìn)行反串行化 
13.12 在出現(xiàn)故障時(shí),不要讓攻擊者獲知太多的信息 
13.13 權(quán)衡SAOP 
13.14 最后的一些想法 
第14章 測(cè)試應(yīng)用程序的安全性 
14.1 安全測(cè)試員的作用 
14.2 安全性測(cè)試與一般測(cè)試的區(qū)別 
14.3 進(jìn)入正題 
14.4 建立安全性測(cè)試計(jì)劃 
14.4.1 分解應(yīng)用程序 
14.4.2 確定組件接口 
14.4.3 依照隱患的相對(duì)大小對(duì)接口進(jìn)行排序 
14.4.4 確定每一個(gè)接口使用的數(shù)據(jù) 
14.4.5 通過(guò)注入錯(cuò)誤的數(shù)據(jù)發(fā)現(xiàn)安全問(wèn)題 
14.4.6 在測(cè)試之前 
14.4.7 制作用于發(fā)現(xiàn)缺陷的工具 
14.5 用欺詐性的服務(wù)程序測(cè)試客戶軟件 
14.6 用戶會(huì)看到或修改那些數(shù)據(jù)嗎 
14.7 用安全模板做測(cè)試 
14.8 測(cè)試代碼應(yīng)該有很高的質(zhì)量 
14.9 測(cè)試端到端的解決方案 
14.10 一些題外話:代碼評(píng)審 
第15章 安全的軟件安裝 
15.1 最低權(quán)限原則
15.2 使用安全配置編輯器 
15.3 低層的安全API 
第16章 常用的好經(jīng)驗(yàn) 
16.1 保護(hù)客戶的隱私 
16.1.1 收集用戶數(shù)據(jù)的類型 
16.1.2 收集用戶數(shù)據(jù) 
16.2 不要告訴攻擊者任何東西 
16.3 雙重檢查你的錯(cuò)誤路徑 
16.4 讓它保持關(guān)閉 
16.5 核心模式(Kernel-Mode)錯(cuò)誤 
16.5.1 使用用戶模式(User-Mode)的內(nèi)存 
16.5.2 通過(guò)未受保護(hù)的IOCTL訪問(wèn)有特權(quán)的接口 
16.6 考慮給代碼添加安全注釋 
16.7 借助于操作系統(tǒng)的功能 
16.8 不要依靠用戶來(lái)做出好的設(shè)計(jì) 
16.9 安全地調(diào)用CreateProcess 
16.9.1 不要將lpApplicationName設(shè)置為NULL 
16.9.2 在lpCommandLine參數(shù)中用引號(hào)包含執(zhí)行文件的路徑 
16.10 不要?jiǎng)?chuàng)建共享的/可寫(xiě)的段(Segment) 
16.11 正確地使用假冒函數(shù) 
16.12 不要在\Program Files目錄中寫(xiě)用戶文件 
16.13 不要在HKLM中寫(xiě)用戶數(shù)據(jù) 
16.14 不要以完全控制或所有訪問(wèn)的方式打開(kāi)對(duì)象 
16.15 對(duì)象創(chuàng)建錯(cuò)誤 
16.16 安全地創(chuàng)建臨時(shí)文件 
16.17 客戶端安全是一個(gè)矛盾 
16.18 例子是模板 
16.19 把你的應(yīng)用程序的使用者當(dāng)成傻瓜 
16.20 如果…你將其歸功于你的用戶 
16.21 判斷基于管理員SID的訪問(wèn) 
16.22 允許使用長(zhǎng)的口令 
附 錄
附錄A 危險(xiǎn)的API 
附錄B 十條安全法則 
附錄C 安全管理員的十條法則 
附錄D 安全的誤區(qū)

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)