注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書教育/教材/教輔考試計算機考試編寫安全的代碼

編寫安全的代碼

編寫安全的代碼

定 價:¥72.00

作 者: (美)Michael Howard,(美)David LeBlanc著
出版社: 清華大學出版社
叢編項: 軟件項目管理世界經(jīng)典教材叢書
標 簽: 網(wǎng)絡(luò)安全

購買這本書可以去


ISBN: 9787302064619 出版時間: 2003-04-01 包裝:
開本: 23cm 頁數(shù): 768 字數(shù):  

內(nèi)容簡介

  《編寫安全的代碼》中文版本書的兩位作者是曾經(jīng)擊敗過世界上最難纏的惡意黑客的代碼武士,他們在書中披露了經(jīng)過實戰(zhàn)考驗的保護代碼安全的各種絕招。比爾·蓋茨將此書欽定為“微軟員工必讀”。本書分為五大部分。第一部分介紹了為什么要保護系統(tǒng)安全,使用權(quán)之免遭攻擊,以及設(shè)計這種系統(tǒng)的原則和分析技術(shù)。第二部分和第三部分是本書的重點,分別介紹了幾乎適用于任何一種應(yīng)用程序的關(guān)鍵性安全編碼技術(shù),以及網(wǎng)絡(luò)應(yīng)用程序和.NET代碼安全技術(shù)。第四部分講述了一些特殊的、在一般的圖書中很少討論的安全問題。第五部分包括5個附錄,分別介紹危險的API以及安全措施核對清單等。本書告訴您應(yīng)用程序怎么會不完全,為什么人們不愿意構(gòu)建安全的系統(tǒng),最重要的是如何構(gòu)建安全的系統(tǒng)。本書是軟件設(shè)計、開發(fā)、測試、系統(tǒng)管理等人同必讀的教材,也是軟件學院、計算機專業(yè)或軟件公司首選的軟件安全教材。

作者簡介

暫缺《編寫安全的代碼》作者簡介

圖書目錄

第I部分 當前的安全問題
第1章 人們對安全的系統(tǒng)的需求
“野蠻網(wǎng)”上的應(yīng)用程序
對值得信賴的計算的需求
在游戲中干掉對手
巧妙地向企業(yè)推銷安全
通過顛覆推銷安全
灌輸安全意識的一些主意
向老板發(fā)送E-mail
推薦一名安全傳道士
攻擊者的優(yōu)勢和防御者的困境
根源1:防御者必須防御所有的點而攻擊者可以選擇最弱的點
根源2:防御者只能防御已知的攻擊而攻擊者可以刺探未知的弱點
根源3:防御者必須始終保持警惕而攻擊者可以隨意地攻擊
根源4:防御者必須遵守游戲規(guī)則而攻擊者可以不守規(guī)矩
本章小結(jié)
第2章 主動的安全開發(fā)過程
不斷改進開發(fā)過程
安全教育的角色
強制培訓的阻力
不斷更新的培訓
安全科學的進步
教育證明“更多的眼睛”不代表更安全
有力的證據(jù)!
設(shè)計階段
訪問調(diào)查期間的安全問題
定義產(chǎn)品的安全目標
安全是產(chǎn)品的一種特性
要有足夠的時間考慮安全問題
安全的設(shè)計源于威脅建模
終結(jié)不安全的特性
設(shè)置Bug欄
安全小組審閱
開發(fā)階段
只有核心成員能夠查看新代碼(簽字確認)
新代碼的同級安全審查(簽字確認)
定義安全的編碼準則
審查舊的缺陷
外部安全審直
安全運動
留心自己的錯誤數(shù)量
記錄錯誤
沒有驚喜,也沒有禮物
測試階段
發(fā)貨和維護階段
如何知道已完成
響應(yīng)過程
責任制
本章小結(jié)
第3章 賴以生存的安全法則
設(shè)計、默認和部署安全(SD3)
設(shè)計安全
默認安全
部署安全
安全法則
從錯誤中吸取教訓
盡可能縮小攻擊面
采用安全的默認設(shè)置
縱深防御
使用最小的特權(quán)
向下兼容總是令人傷心
假設(shè)外部系統(tǒng)是不安全的
故障的應(yīng)對計劃
安全模式失敗
切記:安全特性!=安全的特性
決不要將安全僅維系于隱匿
不要將代碼與數(shù)據(jù)混合在一起
正確地解決安全問題
本章小結(jié)
第4章 威脅建模
通過威脅建模進行安全的設(shè)計
成立威脅建模小組
分解應(yīng)用程序
確定系統(tǒng)所面臨的威脅
按風險大小依次排列威脅
選擇應(yīng)付威脅的方法
選擇緩和威脅的技術(shù)
安全技術(shù)
身分驗證
授權(quán)
防篡改和增強保密性的技術(shù)
保護秘密或最好不要保存秘密
加密、哈希、MAC和數(shù)字簽名
審核
篩選、截流和服務(wù)質(zhì)量
最小特權(quán)
緩和工資表范例程序的威脅
各種威脅及解決方案
本章小結(jié)
第II部分 安全的編碼技術(shù)
第5章 1號公敵:緩沖區(qū)溢出
堆棧溢出
堆溢出
數(shù)組下標錯誤
格式字符串錯誤
Unicode和ANSI緩沖區(qū)大小不匹配
一個真實的Unicode錯誤示例
預防緩沖區(qū)溢出
安全的字符串處理
關(guān)于字符串處理函數(shù)的警告
Visual C++ .NET的/GS選項
本章小結(jié)
第6章 確定適當?shù)脑L問控制
ACL何以如此重要
題外話:修復注冊表代碼
ACL的組成
選擇好的ACL的方法
有效的拒絕ACE
創(chuàng)建ACL
在Windows NT 4中創(chuàng)建ACL
在Windows 2000中創(chuàng)建ACL
用活動模板庫創(chuàng)建ACL
正確排序ACE
留意終端服務(wù)器和遠程桌面的SID
NULL DACL和其他的危險ACE類型
NULL DACL和審核
DangerousACETypes
如果無法改變NULL DACL該怎么辦
其他的訪問控制機制
.NET框架的角色
COM+的角色
IP限制
SQL Server觸發(fā)器和權(quán)限
一個醫(yī)學方面的示例
關(guān)于訪問控制機制的重要說明
本章小結(jié)
第7章 以最小特權(quán)運行
現(xiàn)實中的最小特權(quán)
病毒和特洛伊木馬
丑化Web服務(wù)器
訪問控制簡介
特權(quán)簡介
SeBackupPrivilege問題
SeRestorePrivilege問題
SeDebugPrivilege問題
SeTcbPrivilege問題
SeAssignPrimaryTokenPrivilege問題
SeLoadDriverPrivilege問題
seRemoteShutdownPrivilege問題
SeTakeOwnershipPrivilege問題
令牌簡介
令牌、特權(quán)、SID、ACL和進程之間的關(guān)系
SID和訪問檢查,特權(quán)和特權(quán)檢查
應(yīng)用程序要求提高特權(quán)的三個理由
ACL例題
特權(quán)問題
使用LSA秘密
解決提高特權(quán)的問題
解決ACL例題
解決特權(quán)問題
解決LSA問題
確定適當特權(quán)的過程
步驟1:找到應(yīng)用程序使用的資源
步驟2:找到應(yīng)用程序使用的特權(quán)API
步驟3:哪一個賬戶是必需的
步驟4:獲取今牌的內(nèi)容
步驟5:所有SID和特權(quán)是否都是必需的
步驟6:調(diào)整令牌
Windows XP和Windows.NET Server 2003中的低特權(quán)服務(wù)賬戶
模擬特權(quán)和Windows.NET Server 2003
調(diào)試最小特權(quán)問題
為什么以普通用戶運行時應(yīng)用程序失敗
如何判斷應(yīng)用程序失敗的原因
本章小結(jié)
第8章 加密的弱點
使用不良的隨機數(shù)
問題:rand
Win32中的加密隨機數(shù)
托管代碼中的加密隨機數(shù)
Web頁中的加密隨機數(shù)
使用密碼導出加密密鑰
測量密碼的有效位長度
密鑰管理問題
長期密鑰和短期密鑰
使用合適的密鑰長度保護數(shù)據(jù)
將密鑰保存在靠近數(shù)據(jù)源的地方
密鑰交換問題
創(chuàng)建自己的加密函數(shù)
使用相同的流碼加密密鑰
人們?yōu)楹问褂昧鞔a
流碼的缺陷
如果必須使用相同的密鑰怎么辦
針對流碼的位翻轉(zhuǎn)攻擊
解決位翻轉(zhuǎn)攻擊
何時使用哈希、鍵控哈?;驍?shù)字簽名
重用明文和密文的緩沖區(qū)
使用加密技術(shù)援和威脅
在文檔中說明你使用的加密算法
第9章 保護機密數(shù)據(jù)
攻擊機密數(shù)據(jù)
有時并不需要保存秘密
創(chuàng)建偽裝的哈希
使用PKCS#5增加攻擊的難度
獲取用戶的秘密
保護Windows 2000及其以后版本中的秘密
特殊案例:Windows XP中的客戶證書
保護Windows NT 4中的秘密
保護Windows 95/98Me/CE中的秘密
使用PnP獲得設(shè)備的詳細資料
不要選擇最小公分母解決方案
管理內(nèi)存中的秘密
編譯器優(yōu)化停止警告
對內(nèi)存中的機密數(shù)據(jù)進行加密
鎖定內(nèi)存以防敏感數(shù)據(jù)被分頁
保護托管代碼中的機密數(shù)據(jù)
管理托管代碼存放在內(nèi)存中的秘密
提高安全門檻
把數(shù)據(jù)存儲在FAT文件中
使用嵌入密鑰和XOR對數(shù)據(jù)進行編碼
使用嵌入密鑰和3DES加密數(shù)據(jù)
使用3DES加密數(shù)據(jù)并把密碼存放在注冊表中
使用3DES加密數(shù)據(jù)并把強密鑰存儲在注冊表中
使用3DES加密數(shù)據(jù)把強密鑰存儲在注冊表中并使用ACL控制文件和注冊表項
使用3DES加密數(shù)據(jù)把強密鑰存儲在注冊表中要求用戶輸入密碼并使用ACL
控制文件和注冊表項
保護機密數(shù)據(jù)時的折衷方案
本章小結(jié)
第10章 一切輸入都是有害的
問題
誤信他人
防御輸入攻擊的策略
如何檢查合法性
Perl中被污染的變量
使用正則表達式檢查輸入
仔細檢查發(fā)現(xiàn)的數(shù)據(jù)是否有效
正則表達式和Unicode
正則表達式的“羅塞塔石碑”
Perl中的正則表達式
托管代碼中的正則表達式
腳本中的正則表達式
C++中的正則表達式
不使用正則表達式的最佳做法
本章小結(jié)
第11章 規(guī)范表示的問題
規(guī)范的含義及其存在的問題
規(guī)范文件名的問題
繞過Napster名稱過濾
AppleMacOSX和Apache的弱點
DOS設(shè)備名的弱點
Sun公司的StarOffice/tmp目錄的符號鏈接的弱點
常見的Windows規(guī)范文件名錯誤
基于Web的規(guī)范問題
繞過AOL的父母控制
繞過eEye的安全檢查
安全區(qū)域和IE 4的“無點IP地址”錯誤
IIS 4.0的::$DATA的弱點
何時一行變成了兩行
另一個Web問題——換碼
視覺等效攻擊和同形異義詞攻擊
預防規(guī)范化錯誤
不要根據(jù)文件名進行決策
使用正則表達式限制文件名的格式
停止生成8.3格式的文件名
不要相信PATH環(huán)境變量——使用完整的路徑名
嘗試規(guī)范化文件名
安全地調(diào)用CreateFile
基于Web的規(guī)范化問題的補救措施
限制合法輸入
處理UTF-8字符時要謹慎
ISAPI——巖石和硬地之間
最后的考慮:非基于文件的規(guī)范化問題
服務(wù)器名
用戶名
本章小結(jié)
第12章 數(shù)據(jù)庫輸入問題
問題
偽補救措施1:用引號把輸入括起來
偽補救措施2:使用存儲過程
補救措施1:永不以Sysadmin身份連接
補救措施2:以安全的方式創(chuàng)建SQL語句
以安全的方式創(chuàng)建SQL存儲過程
深層防御示例
本章小結(jié)
第13章 Web特有的輸入問題
跨網(wǎng)站腳本:輸入何時變壞了
有時攻擊者不需要<SCRIPT>塊
攻擊者不需要用戶單擊鏈接!
與XSS有關(guān)的其他攻擊
針對本地文件的XSS攻擊
針對HTML資源的XSS攻擊
XSS的補救措施
將輸出編碼
在所有標記屬性兩端添加雙引號
將數(shù)據(jù)插入innerText屬性
強制使用代碼頁
IE 6.0 SPI的cookie選項HttpOnly
IE的“Web標記”
IE的<FRAME SECURITY>屬性
ASP.NET 1.1的ValidateRequest配置選項
不要指望不安全的構(gòu)造
我只是想讓用戶向我的Web站點發(fā)送HTML
如何審查代碼中的XSS錯誤
基于Web的其他安全主題
eval()可能是壞的
HTTP信任問題
ISAPI應(yīng)用程序和篩選器
警惕“可預知的Cookie”
SSL/TLS客戶端的問題
本章小結(jié)
第14章 國際化問題
118N安全的黃金準則
在應(yīng)用程序中使用Unicode
預防118N緩沖區(qū)溢出
字和字節(jié)
驗證118N
可視驗證
不要使用LCMapString驗證字符串
使用CreateFile驗證文件名
字符集轉(zhuǎn)換問題
調(diào)用MultiByteToWideChar時使用MB_PRECOMPOSED和MB_HRR_INVALID_CHARS
調(diào)用WideCharToMultiByte時使用WC_NO_BEST_FIT_CHARS445比較和排序
Unicode字符屬性
范式
本章小結(jié)
第III部分 更安全的編碼技術(shù)
第15章 套接字安全
避免服務(wù)器劫持
TCP窗口攻擊
選擇服務(wù)器接口
接受連接
編寫防火墻友好的應(yīng)用程序
只使用一個連接
不要求服務(wù)器從后端連接到客戶機
使用基于連接的協(xié)議
不要在另一個協(xié)議上多路復用應(yīng)用程序
不要把主機的IP地址嵌入應(yīng)用層數(shù)據(jù)
使應(yīng)用程序成為可配置的
電子欺騙與基于主機和基于端口的信任
IPv6即將發(fā)布
本章小結(jié)
第16章 保護RPC、ActiveX控件和DCOM
RPC入門
什么是RPC
創(chuàng)建RPC應(yīng)用程序
RPC應(yīng)用程序如何通信
安全的RPC的最佳做法
使用/robust MIDL開關(guān)
使用[range]屬性
要求身份驗證的連接
使用數(shù)據(jù)包隱私和完整性
使用嚴謹?shù)纳舷挛木浔?br />不要將訪問檢查依賴于上下文句柄
警惕NULL上下文句柄
不要信任對等機
使用安全回調(diào)
多臺RPC服務(wù)器駐留在同一進程內(nèi)意味著不安全
使用主流的協(xié)議
安全的DCOM的最佳做法
DCOM基礎(chǔ)
應(yīng)用層安全
DCOM用戶上下文
可編程的安全設(shè)置
源端和接收端
ActiveX入門
安全的ActiveX的最佳做法
對于初始化和腳本來說ActiveX組件是否安全
初始化和腳本安全的最佳做法
本章小結(jié)
第17章 防止拒絕服務(wù)攻擊
應(yīng)用程序失敗攻擊
CPU饑餓攻擊
內(nèi)存不足攻擊
資源不足攻擊
網(wǎng)絡(luò)帶寬攻擊
本章小結(jié)
第18章 編寫安全的.NET代碼
代碼訪問安全概述
FxCop:“必備的”工具
程序集是強命名的
強命名程序集和ASP.NET
指定程序集權(quán)限要求
請求最小的權(quán)限集
拒絕不必要的權(quán)限
請求可選的權(quán)限
過分熱衷于使用Assert方法
關(guān)于Demand和Assert方法的進一步信息
及時禁用斷言
請求和鏈接請求
LinkDemand安全錯誤示例
慎用SuppressUnmanagedCodeSecurityAttribute屬性
遠程請求
限制代碼的使用范圍
不要在XML或配置文件中存放敏感數(shù)據(jù)
審查允許部分信任的程序集
檢查非托管代碼的托管包裝的正確性
委托的問題
序列化的問題
隔離存儲的作用
在部署ASP.NET應(yīng)用程序之前禁用跟蹤和調(diào)試
不要遠程發(fā)布冗長的錯誤信息
反序列化來源不可信的數(shù)據(jù)
失敗時不要讓攻擊者知道太多
本章小結(jié)
第IV部分 特殊的安全問題
第19章 安全性測試
安全性測試人員的任務(wù)
安全性測試各不相同
根據(jù)威脅模型制訂安全性測試計劃
分解應(yīng)用程序
確定組件接口
按照受攻擊的可能性大小排列接口
確定每一個接口采用的數(shù)據(jù)結(jié)構(gòu)
用STAIDE威脅攻擊應(yīng)用程序
用數(shù)據(jù)變種攻擊應(yīng)用程序
測試之前
開發(fā)查找缺陷的工具
用無賴服務(wù)器測試客戶機
用戶是否應(yīng)看到或修改數(shù)據(jù)
用安全模板進行測試
發(fā)現(xiàn)一個錯誤時測試并未結(jié)束
測試碼應(yīng)具有很高的質(zhì)量
測試端到端解決方案
確定攻擊面
確定根攻擊向量
確定攻擊向量的偏差
統(tǒng)計產(chǎn)品中有偏差的攻擊向量
本章小結(jié)
第20章 審查安全碼
處理大型應(yīng)用程序
多程方法
從易處著手
整數(shù)上溢
一個相關(guān)的問題:整數(shù)下溢
檢查返回結(jié)果
對指針代碼進行額外的審查
決不要相信網(wǎng)絡(luò)上的數(shù)據(jù)
本章小結(jié)
第21章 安全的軟件安裝
最小特權(quán)原則
安裝后立即清除密碼
使用安全配置編輯器
低級安全API
使用WindowsInstaller
本章小結(jié)
第22章 在應(yīng)用程序中加入隱私策略
對隱私的惡意侵犯和令人討厭的侵犯
主要的隱私立法
個人身份信息
關(guān)于數(shù)據(jù)保護的歐盟法令
安全海港原則
其他隱私立法
隱私與安全
建立隱私基礎(chǔ)設(shè)施
隱私長官的角色
隱私擁護者的角色
設(shè)計尊重隱私的應(yīng)用程序
在開發(fā)過程中加入隱私策略
了解隱私的特點
本章小結(jié)
第23章 常見的好的做法
不要向攻擊者透露任何信息
關(guān)于服務(wù)的最佳做法
安全、服務(wù)和交互式桌面
服務(wù)賬戶準則
不要以條幅字符串的形式泄漏信息
在補丁中改變錯誤消息時要謹慎
復查錯誤路徑
保持關(guān)閉的特性不變
內(nèi)核模式錯誤
高級安全問題
句柄
符號鏈接
配額
序列化基元
緩沖區(qū)處理問題
IRP取消
在代碼中添加關(guān)于安全的注釋
利用操作系統(tǒng)
不要依賴用戶去做正確的決定
安全地調(diào)用CreateProcess函數(shù)
不要給lpApplicationName傳遞NULL
用引號把lpCommandLine中可執(zhí)行文件的路徑括起來
不要創(chuàng)建共享的/可寫入的代碼段
正確使用假冒函數(shù)
不要把用戶文件寫入\ProgramFiles目錄
不要把用戶數(shù)據(jù)寫入HKLM
不要以“完全控制”權(quán)限打開對象
對象創(chuàng)建錯誤
慎用CreateFile
安全地創(chuàng)建臨時文件
Setup程序和EFS文件系統(tǒng)的問題
文件系統(tǒng)再解析點問題
客戶瑞安全是自相矛盾的說法
范例成了模板
“吃掉你自己的狗食”
歸功于用戶
測定基于管理員SID的訪問
允許使用長的密碼
慎用_alloca
ATL轉(zhuǎn)換宏
不要嵌入公司的名稱
將字符串移至資源DLL
應(yīng)用程序日志
從危險的C/C++遷移到托管代碼
第24章 編寫安全文檔和錯誤消息
文檔中的安全問題
關(guān)于文檔的基礎(chǔ)知識
通過文檔緩解威脅
記錄安全的最佳做法
錯誤消息中的安全問題
典型的安全消息
信息泄露問題
被迫同意
累進泄露
消息要具體些
最好不要提問
對安全消息進行可用性測試
審閱產(chǎn)品說明書時的注意事項
安全設(shè)置的可用性
本章小結(jié)
第V部分 附錄
附錄A 危險的API
附錄B 我們所聽到的荒謬借口
附錄C 設(shè)計人員的安全措施和對清單
附錄D 開發(fā)人員的安全措施和對清單
附錄E 測試人員的安全措施和對清單
最后的想法
參考文獻
索引

本目錄推薦

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