| | | C和C++安全編碼(原書第2版) | 該商品所屬分類:計算機/網絡 -> 程序設計 | 【市場價】 | 740-1073元 | 【優惠價】 | 463-671元 | 【介質】 | book | 【ISBN】 | 9787111442790 | 【折扣說明】 | 一次購物滿999元台幣免運費+贈品 一次購物滿2000元台幣95折+免運費+贈品 一次購物滿3000元台幣92折+免運費+贈品 一次購物滿4000元台幣88折+免運費+贈品
| 【本期贈品】 | ①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
| |
版本 | 正版全新電子版PDF檔 | 您已选择: | 正版全新 | 溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。*. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。 *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。 *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。 | | | | 內容介紹 | |
-
出版社:機械工業
-
ISBN:9787111442790
-
作者:(美)塞克德|譯者:盧濤
-
頁數:377
-
出版日期:2014-01-01
-
印刷日期:2014-01-01
-
包裝:平裝
-
開本:16開
-
版次:1
-
印次:1
-
塞克德所著的《C和C++安全編碼(原書第2版)》涵蓋安全編碼各個方面,人們普遍能意識到指針是C和C竹中*靈活的功能,也是程序員*容易犯錯的地方,為強調其重要性有人曾說過“不會用指針的C程序員不是真正的C程序員”,這是因為指針直接對內存地址進行讀、寫訪問,它的重要性不言而喻。但與此同時,這兩門語言的另一些要點卻常常被忽視。然而編寫安全代碼的從業人員,則需要全面地了解字符串、整數、內存管理、格式化輸入與輸出、文件操作中的安全陷阱,並學會規避之法。此外,現代應用程序*大多數具備並發訪問能力,因此本書新增了這些方面的內容,使之*符合實際需要。本書每個主題都配有實例,讀者能從中了解產生安全漏洞的緣由和正確的做法。本書還總結了安全編碼的實施指南,指出軟件開發組織應用這些規程可以提高安全軟件的開發效率並*能保證產品符合安全要求。本書引用了許多相關著作,以便於讀者進一步了解某個主題的細節。總之,本書值得每個從業人員在開始實際編程活動前閱讀。
-
塞克德所著的《C和C++安全編碼(原書第2版)》
是C/C++安全編碼領域的權威著作,被視為“標準”
參考書,由國際資深軟件安全專家撰寫,美國CERT主
管親自作序推薦。本書結合國際標準C11和C++11,以
及C和C++語言的最新發展,既詳細闡述了C/C++語言
及其相關庫固有的安全問題和陷阱,繫統總結了導致
軟件漏洞的各種常見編碼錯誤,並給出了應對錯誤的
解決方案;又對C/C++軟件中常見漏洞的危害、被利
用方式、檢測方法和應對之道進行了全方位講解,包
含大量編碼練習,實踐性強。
《C和C++安全編碼(原書第2版)》從C和C++語言
的各個部分分別介紹了可能導致安全問題的軟件漏洞
:第1章介紹安全術語和概念,並指出為何C和C++程
序中存在如此多的漏洞。第2章描述C和C++中的字符
串操作、常見的安全缺陷以及由此導致的漏洞。第3
章介紹任意內存寫漏洞利用方式,它允許攻擊者對內
存中任意位置的一個地址進行寫操作。第4章描述動
態內存管理,討論了動態分配的緩衝區溢出、寫入已
釋放內存,以及重復釋放漏洞。第5章討論整數安全
問題(即與整數操作相關的安全議題),包括整數溢
出、符號錯誤以及截斷錯誤等。第6章描述格式化輸
出函數的正確和錯誤的用法,對因這些函數的錯誤使
用所導致的格式字符串和緩衝區溢出漏洞都有討論。
第7章重點介紹並發和可能導致死鎖、競爭條件和無
效的內存訪問序列的漏洞。第8章描述和文件I/O相關
的常見漏洞,包括競爭條件和檢查時間與使用時間漏
洞。第9章推薦一些可以整體改善C/C++應用程序安全
性的具體開發實踐,這些建議是對每一章中用於解決
特定漏洞問題的推薦做法的補充。
-
譯者序 序 前言 致謝
第1章 夾縫求生 1.1 衡量危險 1.1.1 損失的現狀 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 開發平臺 1.4.1 操作繫統 1.4.2 編譯器 1.5 小結 1.6 閱讀材料
第2章 字符串 2.1 字符串 2.1.1 字符串數據類型 2.1.2 UTF-8 2.1.3 寬字符串 2.1.4 字符串字面值 2.1.5 C++中的字符串 2.1.6 字符類型 2.1.7 計算字符串大小 2.2 常見的字符串操作錯誤 2.2.1 無界字符串復制 2.2.2 差一錯誤 2.2.3 空字符結尾錯誤 2.2.4 字符串截斷 2.2.5 與函數無關的字符串錯誤 2.3 字符串漏洞及其利用 2.3.1 被污染的數據 2.3.2 IsPasswordOK的安全缺陷 2.3.3 緩衝區溢出 2.3.4 進程內存組織 2.3.5 棧管理 2.3.6 棧溢出 2.3.7 代碼注入 2.3.8 弧注入 2.3.9 返回導向編程 2.4 字符串漏洞緩解策略 2.4.1 字符串處理 2.4.2 C11附錄K邊界檢查接口 2.4.3 動態分配函數 2.4.4 C++ std::basic_string 2.4.5 使字符串對像的引用失效 2.4.6 使用basic_string的其他常見錯誤 2.5 字符串處理函數 2.5.1 gets 2.5.2 C99 2.5.3 C11附錄K邊界檢查接口:gets-s 2.5.4 動態分配函數 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 運行時保護策略 2.6.1 檢測和恢復 2.6.2 輸入驗證 2.6.3 對像大小檢查 2.6.4 Visual Studio中編譯器生成的運行時檢查 2.6.5 棧探測儀 2.6.6 棧溢出保護器 2.6.7 操作繫統策略 2.6.8 檢測和恢復 2.6.9 不可執行棧 2.6.10 W^X 2.6.11 PaX 2.6.12 未來發展方向 2.7 **的漏洞 2.7.1 遠程登錄 2.7.2 Kerberos 2.8 小結 2.9 閱讀材料
第3章 指針詭計 3.1 數據位置 3.2 函數指針 3.3 對像指針 3.4 修改指令指針 3.5 全局偏移表 3.6 dtors區 3.7 虛指針 3.8 atexit和on-exit函數 3.9 longjmp函數 3.10 異常處理 3.10.1 結構化異常處理 3.10.2 繫統默認異常處理 3.11 緩解策略 3.11.1 棧探測儀 3.11.2 W-X 3.11.3 對函數指針編碼和解碼 3.12 小結 3.13 閱讀材料
第4章 動態內存管理 4.1 C內存管理 4.1.1 C標準內存管理函數 4.1.2 對齊 4.1.3 alloca和變長數組 4.2 常見的C內存管理錯誤 4.2.1 初始化錯誤 4.2.2 未檢查返回值 4.2.3 Null或無效指針解引用 4.2.4 引用已釋放內存 4.2.5 多次釋放內存 4.2.6 內存洩漏 4.2.7 零長度分配 4.2.8 DR # 400 4.3 C++的動態內存管理 4.3.1 分配函數 4.3.2 釋放函數 4.3.3 垃圾回收 4.4 常見的C++內存管理錯誤 4.4.1 未能正確檢查分配失敗 4.4.2 不正確配對的內存管理函數 4.4.3 多次釋放內存 4.4.4 釋放函數拋出一個異常 4.5 內存管理器 4.6 Doug Lea的內存分配器 4.7 雙重釋放漏洞 4.7.1 寫入已釋放的內存 4.7.2 RtlHeap 4.7.3 緩衝區溢出(**版) 4.8 緩解策略 4.8.1 空指針 4.8.2 一致的內存管理約定 4.8.3 phkmalloc 4.8.4 隨機化 4.8.5 OpenBSD 4.8.6 jemalloc內存管理器 4.8.7 靜態分析 4.8.8 運行時分析工具 4.9 值得注意的漏洞 4.9.1 CVS緩衝區溢出漏洞 4.9.2 Microsoft數據訪問組件 4.9.3 CVS服務器雙重釋放漏洞 4.9.4 MIT Kerberos 5中的漏洞 4.10 小結
第5章 整數安全 5.1 整數安全導論 5.2 整數數據類型 5.2.1 無符號整數類型 5.2.2 回繞 5.2.3 有符號整數類型 5.2.4 有符號整數的取值範圍 5.2.5 整數溢出 5.2.6 字符類型 5.2.7 數據模型 5.2.8 其他整數類型 5.3 整數轉換 5.3.1 轉換整數 5.3.2 整數轉換級別 5.3.3 整數類型提升 5.3.4 普通算術轉換 5.3.5 由無符號整數類型轉換 5.3.6 由有符號整數類型轉換 5.3.7 轉換的影響 5.4 整數操作 5.4.1 賦值 5.4.2 加法 5.4.3 減法 5.4.4 乘法 5.4.5 除法和求餘 5.4.6 移位 5.5 整數漏洞 5.5.1 漏洞 5.5.2 回繞 5.5.3 轉換和截斷錯誤 5.5.4 非異常的整數邏輯錯誤 5.6 緩解策略 5.6.1 整數類型的選擇 5.6.2 抽像數據類型 5.6.3 任意精度算術 5.6.4 範圍檢查 5.6.5 前提條件和後驗條件測試 5.6.6 安全整數庫 5.6.7 溢出檢測 5.6.8 編譯器生成的運行時檢查 5.6.9 可驗證範圍操作 5.6.10 仿佛無限範圍整數模型 5.6.11 測試與分析 5.7 小結
第6章 格式化輸出 6.1 變參函數 6.2 格式化輸出函數 6.2.1 格式字符串 6.2.2 GCC 6.2.3 Visual C++ 6.3 對格式化輸出函數的漏洞利用 6.3.1 緩衝區溢出 6.3.2 輸出流 6.3.3 使程序崩潰 6.3.4 查看棧內容 6.3.5 查看內存內容 6.3.6 覆寫內存 6.3.7 **化 6.3.8 寬字符格式字符串漏洞 6.4 棧隨機化 6.4.1 阻礙棧隨機化 6.4.2 以雙字的格式寫地址 6.4.3 直接參數訪問 6.5 緩解策略 6.5.1 排除用戶輸入的格式字符串 6.5.2 靜態內容的動態使用 6.5.3 限制字節寫入 6.5.4 C11附錄K邊界檢查接口 6.5.5 iostream與stdio 6.5.6 測試 6.5.7 編譯器檢查 6.5.8 靜態污點分析 6.5.9 調整變參函數的實現 6.5.10 Exec Shield 6.5.11 FormatGuard 6.5.12 靜態二進制分析 6.6 **的漏洞 6.6.1 華盛頓大學FTP Daemon 6.6.2 CDE ToolTalk 6.6.3 Ettercap NG-0.7.2版 6.7 小結 6.8 閱讀材料
第7章 並發 7.1 多線程 7.2 並行 7.2.1 數據並行 7.2.2 任務並行 7.3 性能目標 7.4 常見錯誤 7.4.1 競爭條件 7.4.2 損壞的值 7.4.3 易變的對像 7.5 緩解策略 7.5.1 內存模型 7.5.2 同步原語 7.5.3 線程角色分析(研究) 7.5.4 不可變的數據結構 7.5.5 並發代碼屬性 7.6 緩解陷阱 7.6.1 死鎖 7.6.2 過早釋放鎖 7.6.3 爭用 7.6.4 ABA問題 7.7 值得注意的漏洞 7.7.1 在多核動態隨機訪問存儲器繫統中的DoS攻擊 7.7.2 繫統調用包裝器中的並發漏洞 7.8 小結
第8章 文件I/O 8.1 文件I/O基礎 8.1.1 文件繫統 8.1.2 特殊文件 8.2 文件I/O接口 8.2.1 數據流 8.2.2 打開和關閉文件 8.2.3 POSIX 8.2.4 C++中的文件I/O 8.3 訪問控制 8.3.1 UNIX文件權限 8.3.2 進程特權 8.3.3 *改特權 8.3.4 管理特權 8.3.5 管理權限 8.4 文件鋻定 8.4.1 目錄遍歷 8.4.2 等價錯誤 8.4.3 符號鏈接 8.4.4 規範化 8.4.5 硬鏈接 8.4.6 設備文件 8.4.7 文件屬性 8.5 競爭條件 8.5.1 檢查時間和使用時間 8.5.2 創建而不替換 8.5.3 獨占訪問 8.5.4 共享目錄 8.6 緩解策略 8.6.1 關閉競爭窗口 8.6.2 消除競爭對像 8.6.3 控制對競爭對像的訪問 8.6.4 競爭檢測工具 8.7 小結
第9章 **的實踐 9.1 安全開發生命周期 9.1.1 TSP-Secure 9.1.2 計劃和跟蹤 9.1.3 質量管理 9.2 安全培訓 9.3 要求 9.3.1 安全編碼標準 9.3.2 安全質量需求工程 9.3.3 用例/誤用例 9.4 設計 9.4.1 安全的軟件開發原則 9.4.2 威脅建模 9.4.3 分析攻擊面 9.4.4 現有代碼中的漏洞 9.4.5 安全包裝器 9.4.6 輸入驗證 9.4.7 信任邊界 9.4.8 黑名單 9.4.9 白名單 9.4.10 測試 9.5 實現 9.5.1 編譯器檢查 9.5.2 仿佛無限範圍整數模型 9.5.3 有安全保證的C/C++ 9.5.4 靜態分析 9.5.5 源代碼分析實驗室 9.5.6 深層防御 9.6 驗證 9.6.1 靜態分析 9.6.2 滲透測試 9.6.3 模糊測試 9.6.4 代碼審計 9.6.5 開發人員準則與檢查清單 9.6.6 獨立安全審查 9.6.7 攻擊面回顧 9.7 小結 9.8 閱讀材料 參考文獻 縮略語
| | | | | |