天天看點

《白帽子講WEB安全》學習筆記之第17章 安全開發流程(SDL)第17章 安全開發流程(SDL)

安全開發是從根源有效地解決安全漏洞問題,而已在軟體的生命周期内,這樣的開發模式成本更低。

SDL過程:

q  教育訓練

所有的開發人員必須接收适當的安全教育訓練,了解相關的安全知識。

q  安全要求

明确項目的安全要求。

q  品質門/bug欄

品質門和bug欄相當于确定安全和隐私品質的最低可接受級别。

q  安全和隐私風險評估

評估項目中的安全現狀和威脅模型

q  設計要求

在産品設計初期考慮安全問題

q  減小攻擊面

減小攻擊面通過減少攻擊者利用潛在弱點或漏洞的機會來降低風險。減少攻擊面包括關閉和限制對系統服務的通路,應用“最小權限原則”,以及盡可能的進行分層防禦。

q  威脅模組化

建立威脅模型分析項目或産品可能遇到的攻擊,以及給出解決方案

q  使用指定的工具

q  棄用不安全函數

q  靜态分析

q  動态程式分析

q  模糊測試

模糊測試是一種專門形式的動态分析,它通過故意想應用程式引入不良格式或随即資料誘發程式故障。

q  威脅模型和攻擊面評析

需求發生改變時,安全模式也需要相應改變

q  事件響應計劃

産品的釋出需要留下開發人員的聯系方式,以及相應的文檔,友善日後解決問題。

q  最終安全評估

q  釋出/存檔

靈活sdl的思想其實就是以變化的觀點實施安全的工作。需求和功能可能一直在變化,代碼可能也在發生變化,這要求實施SDL時需要在每一個階段更新威脅模型和隐私政策,在必要的環節疊代模糊測試、代碼安全分析等工作。

準則:

q  與項目經理進行充分的溝通,排出足夠的時間

q  規範公司的立項流程,確定所有項目都能通知到安全團隊,避免遺漏

q  樹立安全部門的權威,項目必須由安全部門稽核後才能釋出

q  将技術安放寫入開發、測試的工作手冊

q  給開發工程師教育訓練安全方案

q  記錄所有的安全bug,激勵程式員編寫安全的代碼

應該建立安全程式設計的代碼庫,以及一些比較常見的安全編碼問題。

Sun 的安全編碼指導方針:

q  小心使用 特權代碼

q  小心處理 靜态字段

q  最小化作用域 (scope)

q  小心選擇 公共 (public) 方法和字段

q  适當的 包 (package) 保護性

q  盡可能使用 不可變 (immutable) 對象

q  永遠不要傳回對包含敏感資料的内部數組的引用

q  永遠不要直接存儲使用者提供(user-supplied)的數組

q  小心使用序列化(Serialization)

q  小心使用本地方法(native methods)

q  清除敏感資訊

Java 安全反模式

q  忽略那些全模式的代碼不經意間就會造成漏洞

典型的 Java 安全編碼反模式(Antipatterns):

忽略語言特性 (例如整數溢出 (Integer Overflow) )

不注意使用序列化, 不注意使用 特權代碼

将字段和方法定義到不适當的可見性作用域

在非終态 (non-final) 靜态字段中的隐蔽通道(Covert  Channels)

參考資料:http://blog.csdn.net/Test_sunny/article/details/4653783

              http://51CTO提醒您,請勿濫發廣告!/ceshi/ceshijishu/aqcs/2013/0715/206456.html

              http://51CTO提醒您,請勿濫發廣告!/ceshi/ceshijishu/aqcs/2012/0329/204547.html

本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1859569

繼續閱讀