注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合C和C++安全編碼(原書第2版)

C和C++安全編碼(原書第2版)

C和C++安全編碼(原書第2版)

定 價:¥79.00

作 者: (美)Robert C. Seacord 著
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng): 華章程序員書庫
標(biāo) 簽: 暫缺

ISBN: 9787111442790 出版時間: 2013-12-01 包裝: 平裝
開本: 16開 頁數(shù): 377 字?jǐn)?shù):  

內(nèi)容簡介

  《華章程序員書庫:C和C++安全編碼(原書第2版)》是C/C++安全編碼領(lǐng)域的權(quán)威著作,被視為“標(biāo)準(zhǔn)”參考書,由國際資深軟件安全專家撰寫,美國CERT主管親自作序推薦。本書結(jié)合國際標(biāo)準(zhǔn)C11和C++11,以及C和C++語言的最新發(fā)展,既詳細(xì)闡述了C/C++語言及其相關(guān)庫固有的安全問題和陷阱,系統(tǒng)總結(jié)了導(dǎo)致軟件漏洞的各種常見編碼錯誤,并給出了應(yīng)對錯誤的解決方案;又對C/C++軟件中常見漏洞的危害、被利用方式、檢測方法和應(yīng)對之道進(jìn)行了全方位講解,包含大量編碼練習(xí),實(shí)踐性強(qiáng)。《華章程序員書庫:C和C++安全編碼(原書第2版)》從C和C++語言的各個部分分別介紹了可能導(dǎo)致安全問題的軟件漏洞:第1章介紹安全術(shù)語和概念,并指出為何C和C++程序中存在如此多的漏洞。第2章描述C和C++中的字符串操作、常見的安全缺陷以及由此導(dǎo)致的漏洞。第3章介紹任意內(nèi)存寫漏洞利用方式,它允許攻擊者對內(nèi)存中任意位置的一個地址進(jìn)行寫操作。第4章描述動態(tài)內(nèi)存管理,討論了動態(tài)分配的緩沖區(qū)溢出、寫入已釋放內(nèi)存,以及重復(fù)釋放漏洞。第5章討論整數(shù)安全問題(即與整數(shù)操作相關(guān)的安全議題),包括整數(shù)溢出、符號錯誤以及截?cái)噱e誤等。第6章描述格式化輸出函數(shù)的正確和錯誤的用法,對因這些函數(shù)的錯誤使用所導(dǎo)致的格式字符串和緩沖區(qū)溢出漏洞都有討論。第7章重點(diǎn)介紹并發(fā)和可能導(dǎo)致死鎖、競爭條件和無效的內(nèi)存訪問序列的漏洞。第8章描述和文件I/O相關(guān)的常見漏洞,包括競爭條件和檢查時間與使用時間漏洞。第9章推薦一些可以整體改善C/C++應(yīng)用程序安全性的具體開發(fā)實(shí)踐,這些建議是對每一章中用于解決特定漏洞問題的推薦做法的補(bǔ)充。

作者簡介

暫缺《C和C++安全編碼(原書第2版)》作者簡介

圖書目錄

譯者序

前言
致謝
第1章 夾縫求生
1.1  衡量危險
1.1.1  損失的現(xiàn)狀
1.1.2  威脅的來源
1.1.3  軟件安全
1.2  安全概念
1.2.1  安全策略
1.2.2  安全缺陷
1.2.3  漏洞
1.2.4  漏洞利用
1.2.5  緩解措施
1.3  C和C++
1.3.1  C和C++簡史
1.3.2  C存在的問題
1.3.3  遺留代碼
1.3.4  其他語言
1.4  開發(fā)平臺
1.4.1  操作系統(tǒng)
1.4.2  編譯器
1.5  小結(jié)
1.6  閱讀材料
第2章 字符串
2.1  字符串
2.1.1  字符串?dāng)?shù)據(jù)類型
2.1.2  UTF-8
2.1.3  寬字符串
2.1.4  字符串字面值
2.1.5  C++中的字符串
2.1.6  字符類型
2.1.7  計(jì)算字符串大小
2.2  常見的字符串操作錯誤
2.2.1  無界字符串復(fù)制
2.2.2  差一錯誤
2.2.3  空字符結(jié)尾錯誤
2.2.4  字符串截?cái)?br />2.2.5  與函數(shù)無關(guān)的字符串錯誤
2.3  字符串漏洞及其利用
2.3.1  被污染的數(shù)據(jù)
2.3.2  IsPasswordOK的安全缺陷
2.3.3  緩沖區(qū)溢出
2.3.4  進(jìn)程內(nèi)存組織
2.3.5  棧管理
2.3.6  棧溢出
2.3.7  代碼注入
2.3.8  弧注入
2.3.9  返回導(dǎo)向編程
2.4  字符串漏洞緩解策略
2.4.1  字符串處理
2.4.2  C11附錄K邊界檢查接口
2.4.3  動態(tài)分配函數(shù)
2.4.4  C++ std::basic_string
2.4.5  使字符串對象的引用失效
2.4.6  使用basic_string的其他常見錯誤
2.5  字符串處理函數(shù)
2.5.1  gets
2.5.2  C99
2.5.3  C11附錄K邊界檢查接口:gets-s
2.5.4  動態(tài)分配函數(shù)
2.5.5  strcpy和strcat
2.5.6  C99
2.5.7  strncpy和strncat
2.5.8  memcpy和memmove
2.5.9  strlen
2.6  運(yùn)行時保護(hù)策略
2.6.1  檢測和恢復(fù)
2.6.2  輸入驗(yàn)證
2.6.3  對象大小檢查
2.6.4  Visual Studio中編譯器生成的運(yùn)行時檢查
2.6.5  棧探測儀
2.6.6  棧溢出保護(hù)器
2.6.7  操作系統(tǒng)策略
2.6.8  檢測和恢復(fù)
2.6.9  不可執(zhí)行棧
2.6.10  W^X
2.6.11  PaX
2.6.12  未來發(fā)展方向
2.7  著名的漏洞
2.7.1  遠(yuǎn)程登錄
2.7.2  Kerberos
2.8  小結(jié)
2.9  閱讀材料
第3章 指針詭計(jì)
3.1  數(shù)據(jù)位置
3.2  函數(shù)指針
3.3  對象指針
3.4  修改指令指針
3.5  全局偏移表
3.6  dtors區(qū)
3.7  虛指針
3.8  atexit和on-exit函數(shù)
3.9  longjmp函數(shù)
3.10  異常處理
3.10.1  結(jié)構(gòu)化異常處理
3.10.2  系統(tǒng)默認(rèn)異常處理
3.11  緩解策略
3.11.1  棧探測儀
3.11.2  W-X
3.11.3  對函數(shù)指針編碼和解碼
3.12  小結(jié)
3.13  閱讀材料
第4章 動態(tài)內(nèi)存管理
4.1  C內(nèi)存管理
4.1.1  C標(biāo)準(zhǔn)內(nèi)存管理函數(shù)
4.1.2  對齊
4.1.3  alloca和變長數(shù)組
4.2  常見的C內(nèi)存管理錯誤
4.2.1  初始化錯誤
4.2.2  未檢查返回值
4.2.3  Null或無效指針解引用
4.2.4  引用已釋放內(nèi)存
4.2.5  多次釋放內(nèi)存
4.2.6  內(nèi)存泄漏
4.2.7  零長度分配
4.2.8  DR # 400
4.3  C++的動態(tài)內(nèi)存管理
4.3.1  分配函數(shù)
4.3.2  釋放函數(shù)
4.3.3  垃圾回收
4.4  常見的C++內(nèi)存管理錯誤
4.4.1  未能正確檢查分配失敗
4.4.2  不正確配對的內(nèi)存管理函數(shù)
4.4.3  多次釋放內(nèi)存
4.4.4  釋放函數(shù)拋出一個異常
4.5  內(nèi)存管理器
4.6  Doug Lea的內(nèi)存分配器
4.7  雙重釋放漏洞
4.7.1  寫入已釋放的內(nèi)存
4.7.2  RtlHeap
4.7.3  緩沖區(qū)溢出(終極版)
4.8  緩解策略
4.8.1  空指針
4.8.2  一致的內(nèi)存管理約定
4.8.3  phkmalloc
4.8.4  隨機(jī)化
4.8.5  OpenBSD
4.8.6  jemalloc內(nèi)存管理器
4.8.7  靜態(tài)分析
4.8.8  運(yùn)行時分析工具
4.9  值得注意的漏洞
4.9.1  CVS緩沖區(qū)溢出漏洞
4.9.2  Microsoft數(shù)據(jù)訪問組件
4.9.3  CVS服務(wù)器雙重釋放漏洞
4.9.4  MIT Kerberos 5中的漏洞
4.10  小結(jié)
第5章 整數(shù)安全
5.1  整數(shù)安全導(dǎo)論
5.2  整數(shù)數(shù)據(jù)類型
5.2.1  無符號整數(shù)類型
5.2.2  回繞
5.2.3  有符號整數(shù)類型
5.2.4  有符號整數(shù)的取值范圍
5.2.5  整數(shù)溢出
5.2.6  字符類型
5.2.7  數(shù)據(jù)模型
5.2.8  其他整數(shù)類型
5.3  整數(shù)轉(zhuǎn)換
5.3.1  轉(zhuǎn)換整數(shù)
5.3.2  整數(shù)轉(zhuǎn)換級別
5.3.3  整數(shù)類型提升
5.3.4  普通算術(shù)轉(zhuǎn)換
5.3.5  由無符號整數(shù)類型轉(zhuǎn)換
5.3.6  由有符號整數(shù)類型轉(zhuǎn)換
5.3.7  轉(zhuǎn)換的影響
5.4  整數(shù)操作
5.4.1  賦值
5.4.2  加法
5.4.3  減法
5.4.4  乘法
5.4.5  除法和求余
5.4.6  移位
5.5  整數(shù)漏洞
5.5.1  漏洞
5.5.2  回繞
5.5.3  轉(zhuǎn)換和截?cái)噱e誤
5.5.4  非異常的整數(shù)邏輯錯誤
5.6  緩解策略
5.6.1  整數(shù)類型的選擇
5.6.2  抽象數(shù)據(jù)類型
5.6.3  任意精度算術(shù)
5.6.4  范圍檢查
5.6.5  前提條件和后驗(yàn)條件測試
5.6.6  安全整數(shù)庫
5.6.7  溢出檢測
5.6.8  編譯器生成的運(yùn)行時檢查
5.6.9  可驗(yàn)證范圍操作
5.6.10  仿佛無限范圍整數(shù)模型
5.6.11  測試與分析
5.7  小結(jié)
第6章 格式化輸出
6.1  變參函數(shù)
6.2  格式化輸出函數(shù)
6.2.1  格式字符串
6.2.2  GCC
6.2.3  Visual C++
6.3  對格式化輸出函數(shù)的漏洞利用
6.3.1  緩沖區(qū)溢出
6.3.2  輸出流
6.3.3  使程序崩潰
6.3.4  查看棧內(nèi)容
6.3.5  查看內(nèi)存內(nèi)容
6.3.6  覆寫內(nèi)存
6.3.7  國際化
6.3.8  寬字符格式字符串漏洞
6.4  棧隨機(jī)化
6.4.1  阻礙棧隨機(jī)化
6.4.2  以雙字的格式寫地址
6.4.3  直接參數(shù)訪問
6.5  緩解策略
6.5.1  排除用戶輸入的格式字符串
6.5.2  靜態(tài)內(nèi)容的動態(tài)使用
6.5.3  限制字節(jié)寫入
6.5.4  C11附錄K邊界檢查接口
6.5.5  iostream與stdio
6.5.6  測試
6.5.7  編譯器檢查
6.5.8  靜態(tài)污點(diǎn)分析
6.5.9  調(diào)整變參函數(shù)的實(shí)現(xiàn)
6.5.10  Exec Shield
6.5.11  FormatGuard
6.5.12  靜態(tài)二進(jìn)制分析
6.6  著名的漏洞
6.6.1  華盛頓大學(xué)FTP Daemon
6.6.2  CDE ToolTalk
6.6.3  Ettercap NG-0.7.2版
6.7  小結(jié)
6.8  閱讀材料
第7章 并發(fā)
7.1  多線程
7.2  并行
7.2.1  數(shù)據(jù)并行
7.2.2  任務(wù)并行
7.3  性能目標(biāo)
7.4  常見錯誤
7.4.1  競爭條件
7.4.2  損壞的值
7.4.3  易變的對象
7.5  緩解策略
7.5.1  內(nèi)存模型
7.5.2  同步原語
7.5.3  線程角色分析(研究)
7.5.4  不可變的數(shù)據(jù)結(jié)構(gòu)
7.5.5  并發(fā)代碼屬性
7.6  緩解陷阱
7.6.1  死鎖
7.6.2  過早釋放鎖
7.6.3  爭用
7.6.4  ABA問題
7.7  值得注意的漏洞
7.7.1  在多核動態(tài)隨機(jī)訪問存儲器系統(tǒng)中的DoS攻擊
7.7.2  系統(tǒng)調(diào)用包裝器中的并發(fā)漏洞
7.8  小結(jié)
第8章 文件I/O
8.1  文件I/O基礎(chǔ)
8.1.1  文件系統(tǒng)
8.1.2  特殊文件
8.2  文件I/O接口
8.2.1  數(shù)據(jù)流
8.2.2  打開和關(guān)閉文件
8.2.3  POSIX
8.2.4  C++中的文件I/O
8.3  訪問控制
8.3.1  UNIX文件權(quán)限
8.3.2  進(jìn)程特權(quán)
8.3.3  更改特權(quán)
8.3.4  管理特權(quán)
8.3.5  管理權(quán)限
8.4  文件鑒定
8.4.1  目錄遍歷
8.4.2  等價錯誤
8.4.3  符號鏈接
8.4.4  規(guī)范化
8.4.5  硬鏈接
8.4.6  設(shè)備文件
8.4.7  文件屬性
8.5  競爭條件
8.5.1  檢查時間和使用時間
8.5.2  創(chuàng)建而不替換
8.5.3  獨(dú)占訪問
8.5.4  共享目錄
8.6  緩解策略
8.6.1  關(guān)閉競爭窗口
8.6.2  消除競爭對象
8.6.3  控制對競爭對象的訪問
8.6.4  競爭檢測工具
8.7  小結(jié)
第9章 推薦的實(shí)踐
9.1  安全開發(fā)生命周期
9.1.1  TSP-Secure
9.1.2   計(jì)劃和跟蹤
9.1.3  質(zhì)量管理
9.2  安全培訓(xùn)
9.3  要求
9.3.1  安全編碼標(biāo)準(zhǔn)
9.3.2  安全質(zhì)量需求工程
9.3.3  用例/誤用例
9.4  設(shè)計(jì)
9.4.1  安全的軟件開發(fā)原則
9.4.2  威脅建模
9.4.3  分析攻擊面
9.4.4  現(xiàn)有代碼中的漏洞
9.4.5  安全包裝器
9.4.6  輸入驗(yàn)證
9.4.7  信任邊界
9.4.8  黑名單
9.4.9  白名單
9.4.10  測試
9.5  實(shí)現(xiàn)
9.5.1  編譯器檢查
9.5.2  仿佛無限范圍整數(shù)模型
9.5.3  有安全保證的C/C++
9.5.4  靜態(tài)分析
9.5.5  源代碼分析實(shí)驗(yàn)室
9.5.6  深層防御
9.6  驗(yàn)證
9.6.1  靜態(tài)分析
9.6.2  滲透測試
9.6.3  模糊測試
9.6.4  代碼審計(jì)
9.6.5  開發(fā)人員準(zhǔn)則與檢查清單
9.6.6  獨(dú)立安全審查
9.6.7  攻擊面回顧
9.7  小結(jié)
9.8  閱讀材料
參考文獻(xiàn)
縮略語

本目錄推薦

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