第1章 應用程序安全性
1.1 安全性前景
1.2 擔心安全性的原因
1.3 什么是安全性
1.3.1 惡意企圖
1.3.2 信任、安全和意圖
1.3.3 危害
1.4 攻擊者的攻擊方式
1.4.1 弱點和利用
1.4.2 組合式攻擊:ILOVEYOU
1.5 如何應付這些攻擊
1.5.1 任務:中等難度的和不可能的
1.5.2 圍高柵欄
1.5.3 您不必是個密碼專家
1.5.4 展望未來
1.6 小結
第2章 .NET和安全性概述
2.1 角色安全和代碼安全
2.1.1 Windows NT的安全性
2.1.2 Internet Explorer的安全性
2.2 .NET的安全概念
2.2.1 托管代碼
2.2.2 .NET Framework的安全命名空間
2.3 策略和權限命名空間
2.3.1 代碼安全
2.3.2 證據集合
2.3.3 策略和權限
2.3.4 快速回顧
2.4 實際應用中的.NET代碼安全
2.4.1 安全破壞的第一次嘗試
2.4.2 堆棧遍歷
2.4.3 使用“請求”強迫執(zhí)行堆棧遍歷
2.4.4 使用Deny和PermitOnly限制權限
2.4.5 使用斷言覆蓋堆棧遍歷
2.4.6 聲明性的安全
2.4.7 縮減授權集
2.5 小結
第3章 .NET的高級安全
3.1 鏈接請求
3.1.1 即時編譯
3.1.2 在“鏈接時”發(fā)出請求
3.1.3 創(chuàng)建鏈接請求
3.1.4 什么時候使用鏈接請求
3.1.5 調用具有鏈接請求的方法
3.1.6 鏈接請求和APTCA
3.1.7 取消非托管的代碼請求
3.1.8 鏈接請求小結
3.2 繼承請求
3.3 安全和反射
3.3.1 反射和鏈接請求
3.3.2 反射和斷言
3.3.3 Reflection和Deny/PermitOnly
3.4 .NET中基于角色的安全
3.4.1 身份對象
3.4.2 負責人對象
3.5 小結
第4章 可定制的安全應用程序
4.1 什么是安全挑戰(zhàn)
4.2 如果違規(guī)就要處理
4.2.1 嘗試一:詢問客戶
4.2.2 嘗試二:使用PermitOnly
4.2.3 嘗試三:向下鎖定目錄
4.2.4 嘗試四:假定它來自Internet
4.2.5 嘗試五:定制策略
4.3 小結
第5章 非安全代碼
5.1 非安全的面向對象代碼
5.2 較差的鏈接請求
5.3 非安全的異常處理代碼
5.3.1 最壞的編程習慣:泄漏特權信息
5.3.2 最壞的編程習慣:不能進入非安全模式
5.3.3 最壞的編程習慣:在沒有處理異常的前提下改變狀態(tài)
5.3.4 異常處理綜述
5.4 泄露秘密信息
5.4.1 最壞的編程習慣:不能請求緩存數據
5.4.2 最壞的編程習慣:編寫自己的加密方法
5.4.3 最壞的編程習慣:試圖對用戶保密
5.5 不安全的服務器端代碼
5.5.1 拒絕服務攻擊
5.5.2 最壞的編程習慣:相信客戶機
5.6 其他問題
5.6.1 線程問題
5.6.2 差的串行化代碼
5.6.3 差的事件處理程序和其他委托
5.6.4 安全使用反射
5.7 小結
第6章 如何編寫安全的代碼
6.1 安全的代碼就是可靠的代碼
6.1.1 正確性
6.1.2 可測試性
6.1.3 服務器的性能
6.1.4 可維護性
6.2 好的程序集
6.2.1 強名
6.2.2 程序集安全特性
6.2.3 程序集安全性總結
6.3 編寫安全的代碼
6.4 一覽表
6.5 再好的軟件也不是絕對安全的
6.5.1 物理安全
6.5.2 過度信任
6.6 小結
第7章 發(fā)現安全故障
7.1 各種安全缺陷
7.1.1 發(fā)現安全缺陷#1:調用非托管代碼
7.1.2 發(fā)現安全缺陷#2:玩游戲
7.1.3 發(fā)現安全缺陷#3:服務器代碼
7.2 發(fā)現代碼中的安全缺陷
附錄A 簡述公鑰加密
A.1 對稱加密系統(tǒng)
A.2 非對稱加密系統(tǒng)
A.2.1 考慮性能
A.2.2 結合使用對稱和非對稱加密系統(tǒng)
A.2.3 公鑰加密和強名
A.2.4 安全發(fā)送不重要
附錄B 使用ILDASM查看IL
附錄C 客戶支持、勘誤表和代碼下載
C.1 如何下載本書的示例代碼
C.2 勘誤表
C.3 E-mail支持
C.4 p2p.wrox.corn