注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計程序設計綜合安全編程代碼靜態(tài)分析

安全編程代碼靜態(tài)分析

安全編程代碼靜態(tài)分析

定 價:¥56.00

作 者: (美國)Brian Chess、(美國)Jacob West 著;董啟雄、韓平 譯
出版社: 機械工業(yè)出版社
叢編項: 華章程序員書庫
標 簽: 程序設計

ISBN: 9787111233213 出版時間: 2008-03-01 包裝: 平裝
開本: 16 頁數(shù): 362 pages 字數(shù):  

內(nèi)容簡介

  創(chuàng)建安全的代碼,僅有好的意圖是遠遠不夠的。程序員要知道:他們的代碼幾乎需要在各種使用環(huán)境和各種配置之下都是安全的。靜態(tài)源代碼分析為用戶提供了使用優(yōu)秀的工具來審查其工作的能力,從而找出各類可直接導致安全漏洞的錯誤?,F(xiàn)在,本書提供了一份關于靜態(tài)分析的完整指導:如何進行靜態(tài)分析,如何將其集成到軟件開發(fā)過程以及如何在代碼安全審查期間最大化其功效等。靜態(tài)分析專家Brian Chess和Jacob West探討了當前最為常見的安全缺陷類型。他們使用來自實際安全事件的Java和C代碼實例闡明了:如何發(fā)現(xiàn)編碼錯誤,如何防止出現(xiàn)編碼錯誤以及如何通過靜態(tài)分析來快速找出類似的錯誤。本書讀者對象是所有關注構建更加安全的軟件的人:軟件開發(fā)人員、軟件安全工程師、軟件分析師以及軟件測試人員。本書內(nèi)容包括:■ 為什么常規(guī)的Bug捕獲技術經(jīng)常找不出安全問題?!?怎樣才能通過靜態(tài)分析幫助程序員做好安全工作?!?決定一個靜態(tài)分析工具成敗的關鍵屬性和算法。■ 提高代碼靜態(tài)分析效率的36種技術?!?70多種嚴重安全漏洞及其詳細解決方案?!?來自FireFox、OpenSSH、MySpace、eTrade、Apache httpd以及其他■ 更多軟件的漏洞實例?!?處理非可信輸入的技術。■ 消除緩沖區(qū)溢出的戰(zhàn)術和戰(zhàn)略方法?!?避免出現(xiàn)Web應用程序、Web 服務以及Ajax相關的錯誤。■ 關注安全的日志技術、調(diào)試技術以及錯誤/異常處理技術?!?秘密和機密信息的創(chuàng)建、維護和共享?!?帶你穿越靜態(tài)分析的詳盡過程。

作者簡介

  Brian Chess是Fortify Software公司的創(chuàng)始人和首席科學家,他的研究重點是用于創(chuàng)建安全系統(tǒng)的實用方法。他在圣克魯茲的加帥l大學(University of California)獲得計算機工程博士學位,在那里他研究在代碼中查找安全相關缺陷問題的靜態(tài)分析。

圖書目錄

r>第一部分  軟件安全和靜態(tài)分析
第1章  軟件安全問題
   1.1  僅有防御性編程還不夠
   1.2  安全功能≠安全的功能
   1.3  質(zhì)量的誤區(qū)
   1.4  軟件開發(fā)全局中的靜態(tài)分析
   1.5  漏洞分類
     1.5.1 種有害的領域
     1.5.2  “7種有害的領域”與“OWASP前10名”
   1.6  小結
第2章  靜態(tài)分析簡介
   2.1  靜態(tài)分析的能力和局限性
   2.2  通過靜態(tài)分析解決問題
     2.2.1  類型檢查
     2.2.2  風格檢查
     2.2.3  程序理解
     2.2.4  程序驗證和屬性檢查
     2.2.5  Bug查找
     2.2.6  安全審查
   2.3  一點理論,一點實際
     2.3.1  成功準則
     2.3.2  分析源代碼與分析編譯后的代碼
   2.4  小結
第3章  作為代碼審查過程組成部分的靜態(tài)分析
   3.1  執(zhí)行代碼審查
     3.1.1  代碼審查周期
     3.1.2  避開可利用性陷阱
   3.2  將安全審查加入到現(xiàn)有的開發(fā)過程中
     3.2.1  采用工具的疑慮
     3.2.2  小處著手,循序漸進
   3.3  靜態(tài)分析度量標準
   3.4  小結
第4章  靜態(tài)分析技術內(nèi)幕
   4.1  建模
     4.1.1  詞法分析
     4.1.2  解析
     4.1.3  抽象語法
     4.1.4  語義分析
     4.1.5  跟蹤控制流
     4.1.6  跟蹤數(shù)據(jù)流
     4.1.7  污染傳播
     4.1.8  指針別名歧義
   4.2  分析算法
     4.2.1  斷言檢查
     4.2.2  單純本地分析
     4.2.3  本地分析方法
     4.2.4  全局分析
     4.2.5  研究性的工具
   4.3  規(guī)則
     4.3.1  規(guī)則格式
     4.3.2  用于污染傳播的規(guī)則
     4.3.3  本書中討論的規(guī)則
   4.4  報告結果
     4.4.1  結果的分組和分類
     4.4.2  消除非預期的結果
     4.4.3  解釋結果的意義
   4.5  小結
第二部分  常見問題
第5章  處理輸入
   5.1  驗證內(nèi)容
     5.1.1  驗證所有輸入
     5.1.2  驗證各種來源的輸入
     5.1.3  建立可信邊界
   5.2  如何進行驗證
     5.2.1  使用強輸入驗證
     5.2.2  避免黑名單法
     5.2.3  不要混淆可用性和安全性
     5.2.4  拒絕不良數(shù)據(jù)
     5.2.5  默認執(zhí)行正確的輸入驗證
     5.2.6  檢驗輸入的長度
     5.2.7  限制數(shù)值輸入
   5.3  防止元字符攻擊
     5.3.1  使用參數(shù)化請求
     5.3.2  路徑操縱
     5.3.3  命令注入
     5.3.4  日志欺騙
   5.4  小結
第6章  緩沖區(qū)溢出
   6.1  緩沖區(qū)溢出簡介
     6.1.1  利用緩沖區(qū)溢出漏洞
     6.1.2  緩沖區(qū)分配策略
     6.1.3  跟蹤緩沖區(qū)大小
   6.2  字符串
     6.2.1  天生危險的函數(shù)
     6.2.2  有界字符串操作
     6.2.3  有界函數(shù)的常見缺陷
     6.2.4  保留Null終止符
     6.2.5  字符集、表達式和編碼
     6.2.6  格式串
     6.2.7  更完善的字符串類和類庫
   6.3  小結
第7章  緩沖區(qū)溢出伴隨的問題
   7.1  整數(shù)
     7.1.1  回繞錯誤
     7.1.2  截斷和符號位擴展
     7.1.3  有符號數(shù)和無符號數(shù)之間的轉換
     7.1.4  檢測和防止整數(shù)溢出的方法
   7.2  運行時保護
     7.2.1  更安全的編程語言
     7.2.2  更安全的C語言
     7.2.3  動態(tài)緩沖區(qū)溢出保護
     7.2.4  動態(tài)保護基準結果
   7.3  小結
第8章  錯誤和異常
   8.1  利用返回代碼處理錯誤
     8.1.1  檢查C語言中的返回值
     8.1.2  檢查Java中的返回值
   8.2  管理異常
     8.2.1  捕獲頂層的任何東西
     8.2.2  消失的異常
     8.2.3  只捕獲需要處理的異常
     8.2.4  控制已檢測的異常
   8.3  防止資源泄露
     8.3.1  C和C++
     8.3.2  Java
   8.4  日志記錄和調(diào)試
     8.4.1  集中日志記錄
     8.4.2  在最終代碼中不包含調(diào)試幫助和“后門”訪問代碼
     8.4.3  清除備份文件
     8.4.4  不要容忍“復活節(jié)彩蛋”
   8.5  小結
第三部分  特性與特色
第9章  Web應用程序
   9.1  用于Web的輸入和輸出驗證
     9.1.1  預料到瀏覽器已遭到破壞
     9.1.2  認為瀏覽器是一種一覽無余的事物
     9.1.3  保護瀏覽器免受惡意內(nèi)容的攻擊
   9.2  HTTP考慮
     9.2.1  使用POST,而不是GET
     9.2.2  請求順序
     9.2.3  錯誤處理
     9.2.4  請求出處
   9.3  維護會話狀態(tài)
     9.3.1  使用強用戶會話標識符
     9.3.2  強制會話空閑超時和最大會話持續(xù)時間
     9.3.3  在認證的基礎上開始一個新的會話
   9.4  為輸入驗證使用Struts架構
     9.4.1  建立Struts  Validator
     9.4.2  對所有操作使用Struts  Validator
     9.4.3  驗證每一個參數(shù)
     9.4.4  維護驗證邏輯
   9.5  小結
第10章  XML與Web服務
   10.1  使用XML
     10.1.1  使用一個標準兼容的XML語法分析程序
     10.1.2  開啟驗證
     10.1.3  要小心外部引用
     10.1.4  保持對文檔查詢的控制
   10.2  使用Web服務
     10.2.1  輸入驗證
     10.2.2  WSDL苦惱
     10.2.3  過度暴露
     10.2.4  過去錯誤的新機會
     10.2.5  JavaScript劫持:一種新的邊界
   10.3  小結
第11章  隱私與秘密
   11.1  隱私與規(guī)則
     11.1.1  識別私有信息
     11.1.2  處理私有信息
   11.2  外發(fā)密碼
     11.2.1  源代碼中不能有密碼
     11.2.2  不存儲明文密碼
   11.3  隨機數(shù)
     11.3.1  在Java中生成隨機數(shù)
     11.3.2  在C和C++中生成隨機數(shù)
   11.4  密碼技術
     11.4.1  選擇一個好的算法
     11.4.2  不要自以為是
   11.5  內(nèi)存中的秘密
     11.5.1  使保持秘密的時間最短
     11.5.2  保守地共享秘密
     11.5.3  安全地刪除秘密
     11.5.4  防止不必要地復制秘密
   11.6  小結
第12章  具有特權的程序
   12.1  特權的含義
     12.1.1  最小特權原理
     12.1.2  這次我是認真的:不相信每一件事
   12.2  管理特權
     12.2.1  在實踐中應用最小特權
     12.2.2  限制文件系統(tǒng)上的特權
     12.2.3  謹防非期待的事件
   12.3  特權提升攻擊
     12.3.1  文件訪問競態(tài)條件
     12.3.2  不安全的臨時文件
     12.3.3  命令注入
     12.3.4  標準文件描述符
   12.4  小結
第四部分  靜態(tài)分析實踐
第13章  Java語言源代碼分析練習
  練習13.0  安裝
  練習13.1  留意結果,現(xiàn)在開始
  練習13.2  人工審計源代碼
  練習13.3  運行Fortify  SCA
  練習13.4  理解原始的分析結果
  練習13.5  分析一個完整的應用程序
  練習13.6  使用Audit  Workbench調(diào)整結果
  練習13.7  審計一個問題
  練習13.8  執(zhí)行一個完整的審計
  練習13.9  編寫自定義規(guī)則
  練習13.2  中問題的答案
第14章  C語言源代碼分析練習
  練習14.0  安裝
  練習14.1  留意結果,現(xiàn)在開始
  練習14.2  人工審計源代碼
  練習14.3  運行Fortify  SCA
  練習14.4  理解原始的分析結果
  練習14.5  分析一個完整的應用程序
  練習14.6  使用Audit  Workbench調(diào)整結果
  練習14.7  審計一個問題
  練習14.8  執(zhí)行一個完整的審計
  練習14.9  編寫自定義規(guī)則
  練習14.2中的問題答案
結束語
參考文獻

本目錄推薦

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