代碼審計 — C/C++ 實踐
曹向誌 馬森 陳能技 等
買這商品的人也買了...
-
易讀程式之美學-提升程式碼可讀性的簡單法則 (The Art of Readable Code)$480$379 -
Binary Hacks -- 駭客秘傳技巧一百招$580$458 -
為你自己學 Git$500$390 -
領域驅動設計:軟體核心複雜度的解決方法 (Domain-Driven Design: Tackling Complexity in the Heart of Software)$680$530 -
Programming Pearls, 2/e (中文新修版)(Programming Pearls, 2/e)$520$442 -
$408算法之禪 : 遞推與遞歸 -
大話資料結構:全新彩色版$780$616 -
程式設計必修的數學課$450$383 -
白話演算法!培養程式設計的邏輯思考 (Grokking Algorithms: An illustrated guide for programmers and other curious people)$520$468 -
$607現代C:概念剖析和編程實踐 -
演算法學習手冊|寫出更有效率的程式 (Learning Algorithms: A Programmer's Guide to Writing Better Code)$580$458 -
會動的演算法:61 個演算法動畫+全圖解逐步拆解,人工智慧、資料分析必備$620$490 -
演算法生存指南$800$632 -
圖說演算法 : 使用 C語言, 3/e$560$437 -
演算法邏輯力:工程師必備的演算法解題、設計、加速技巧 (Algorithmic Thinking: A Problem-Based Introduction)$720$475 -
精通嵌入式 Linux 程式設計, 3/e (上)$750$495 -
精通嵌入式 Linux 程式設計, 3/e (下)$450$297 -
$857Linux 系統安全基礎:二進制代碼安全性分析基礎與實踐 -
$653C++ Core Guidelines 解析 -
Linux 源碼趣讀$948$901 -
穿越作業系統迷霧:從零實現作業系統$594$564 -
$556C++ 之旅, 3/e -
$710高級算法和數據結構 -
跟 NVIDIA 學深度學習!從基本神經網路到 ......、GPT、BERT...,紮穩機器視覺與大型語言模型 (LLM) 的建模基礎$880$748 -
程式設計守則|如何寫出更好的程式碼 (The Rules of Programming: How to Write Better Code)$620$490
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$576 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
78折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$390 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
本書旨在介紹代碼審計及缺陷剖析的相關知識。本書首先介紹了代碼檢測技術和代碼檢測工具;然後講述了C/C++安全標準,展示了與標準不兼容的案例和兼容的案例,並對案例對應的知識點進行講解,以幫助開發人員、評測人員理解和運用標準;接著分析了C/C++語言源代碼漏洞測試,展示了包含安全漏洞的案例,以及修復安全漏洞的案例;最後介紹了常見運行時缺陷,主要基於C/C++案例代碼進行剖析,這些運行時缺陷是在對C/C++項目進行代碼檢測和代碼審計時需要重點關註的。
本書不僅適合開發人員、測試人員閱讀,還適合作為相關培訓機構的教材。
作者簡介
從事軟件測試、軟件安全工作超過20年,擅長分析軟件質量和代碼質量,目前在軟件應用安全領域從事SDL(Security Development Lifecycle,安全開發生命周期)與DevSecOps方面的研發工作,出版過軟件測試管理、性能測試、APP測試等方面的圖書,曾為多家大型企業提供內訓。
馬森
北京大學軟件工程國家工程研究中心副研究員,在軟件代碼分析領域發表論文數十篇,獲得專利數十個,作為項目負責人承擔代碼分析領域的項目十餘個。
陳能技
具有20年IT從業經驗,擔任過測試工程師、項目經理、培訓講師、咨詢顧問、架構師、技術總監等職位,研究方向包括DevOps、DevSecOps、GitOps以及軟件專業化交付能力,編寫過《軟件測試技術大全:測試基礎、流程工具、項目實戰》《大規模組織DevOps實踐》等圖書。
目錄大綱
目 錄
第 1章 代碼檢測和工具 1
1.1 背景 1
1.2 代碼審計 1
1.2.1 代碼審計的思路 2
1.2.2 代碼審計的步驟 2
1.2.3 安全審計的標準 3
1.2.4 代碼審計中的常見概念 5
1.3 代碼檢測工具 5
1.3.1 代碼檢測工具的原理 6
1.3.2 代碼檢測技術 7
1.3.3 代碼檢測的主要方法 9
1.3.4 代碼檢測工具的主要功能 14
1.3.5 常見的代碼檢測工具 14
1.3.6 代碼檢測工具的評價基準 16
1.4 軟件成分分析工具 19
1.4.1 軟件成分分析工具的
原理 20
1.4.2 軟件成分分析工具使用的
關鍵技術 21
1.4.3 SCA工具技術指標 27
1.5 如何成為一名代碼安全檢測
工程師 27
1.6 代碼安全審計/檢測練習靶場 28
第 2章 C語言安全標準(一) 30
2.1 C語言安全標準產生的背景 30
2.2 如何理解和使用GJB 8114標準 30
2.3 C和C++的共享規則 31
2.3.1 聲明定義規則 31
2.3.2 版面書寫規則 57
2.3.3 指針使用規則 63
2.3.4 分支控制規則 77
2.3.5 跳轉控制規則 91
2.3.6 運算處理 93
2.3.7 函數調用 113
第3章 C語言安全標準(二) 127
3.1 關於語句使用的規則 127
3.1.1 關於循環控制的規則 131
3.1.2 關於類型轉換的規則 135
3.1.3 關於初始化的規則 141
3.1.4 關於比較判斷的規則 146
3.1.5 關於變量使用的規則 152
3.2 C++的專用規則 162
3.2.1 關於類與對象的強制規則 162
3.2.2 關於構造函數的強制規則 169
3.2.3 關於虛函數的強制規則 173
3.2.4 關於類型轉換的強制規則 176
3.2.5 關於內存釋放的強制規則 177
第4章 C/C++語言源代碼漏洞測試
規範 180
4.1 不可控的內存分配 180
4.2 路徑錯誤 181
4.3 數據處理 182
4.3.1 相對路徑遍歷 182
4.3.2 絕對路徑遍歷 184
4.3.3 命令行註入 185
4.3.4 SQL註入 186
4.3.5 進程控制 188
4.3.6 緩沖區溢出 189
4.3.7 使用外部控制的格式化
字符串 189
4.3.8 整數溢出 190
4.3.9 信息通過錯誤消息泄露 191
4.3.10 信息通過服務器日誌文件
泄露 192
4.3.11 信息通過調試日誌文件
泄露 193
4.3.12 以未檢查的輸入作為
循環條件 193
4.4 錯誤的API實現 194
4.5 劣質代碼 195
4.6 不充分的封裝 196
4.7 安全功能 197
4.7.1 明文存儲密碼 197
4.7.2 存儲可恢復的密碼 197
4.7.3 密碼硬編碼 198
4.7.4 明文傳輸敏感信息 199
4.7.5 使用已破解或危險的
加密算法 199
4.7.6 可逆的哈希算法 200
4.7.7 密碼分組鏈接模式未使用
隨機初始化向量 201
4.7.8 不充分的隨機數 202
4.7.9 安全關鍵的行為依賴反向
域名解析 203
4.7.10 沒有要求使用強密碼 204
4.7.11 沒有對密碼域進行掩飾 205
4.7.12 通過用戶控制的SQL關鍵字
繞過授權 206
4.7.13 未使用鹽值計算哈希值 207
4.7.14 RSA算法未使用最優
非對稱加密填充 208
4.8 Web問題 209
第5章 常見運行時缺陷 211
5.1 緩沖區溢出 211
5.1.1 緩沖區溢出的原理 211
5.1.2 防範緩沖區溢出 216
5.1.3 棧緩沖區溢出 216
5.1.4 緩沖區溢出案例 217
5.2 內存泄漏 223
5.2.1 內存泄漏的原理 223
5.2.2 內存泄漏案例 224
5.3 代碼不可達 235
5.4 整數溢出或環繞 236
5.5 資源泄露 237
5.6 線程死鎖 238
5.6.1 加鎖後未判斷是否成功 238
5.6.2 線程死鎖 239
5.6.3 加鎖後未解鎖 240
5.7 無限循環 240
5.7.1 可能不變的循環因子 240
5.7.2 循環跳出條件無法滿足 241
5.7.3 函數循環調用 241
5.7.4 控製表達式有邏輯錯誤 241
5.7.5 以外部輸入作為循環
跳出條件 242


