Chapter 01 我的安全世界觀
1.1 Web 安全簡史
1.1.1 中國駭客簡史
1.1.2 駭客技術的發展歷程
1.1.3 Web 安全的興起
1.2 黑帽子,白帽子
1.3 返璞歸真,揭秘安全的本質
1.4 破除迷信,沒有銀彈
1.5 安全三要素
1.6 如何實施安全評估
1.6.1 資產等級劃分
1.6.2 威脅分析
1.6.3 風險分析
1.6.4 設計安全方案
1.7 白帽子兵法
1.7.1 Secure By Default 原則
1.7.2 縱深防禦原則
1.7.3 資料與程式分離原則
1.7.4 不可預測性原則
1.8 小結
Chapter 02 瀏覽器安全
2.1 相同來源策略
2.2 瀏覽器沙盒
2.3 惡意網址攔截
2.4 高速發展的瀏覽器安全
2.5 小結
Chapter 03 跨站指令稿攻擊(XSS)
3.1 XSS 簡介
3.2 XSS 攻擊進階
3.2.1 初探XSS Payload
3.2.2 強大的XSS Payload
3.2.3 XSS 攻擊平台
3.2.4 終極武器:XSS Worm
3.2.5 偵錯JavaScript
3.2.6 XSS 建構技巧
3.2.7 變廢為寶:Mission Impossible
3.2.8 容易被忽視的角落:Flash XSS
3.2.9 真的高枕無憂嗎:JavaScript 開發框架
3.3 XSS 的防禦
3.3.1 四兩撥千斤:HttpOnly
3.3.2 輸入檢查
3.3.3 輸出檢查
3.3.4 正確地防禦XSS
3.3.5 處理豐富文本
3.3.6 防禦DOM Based XSS
3.3.7 換個角度看XSS 的風險
3.4 小結
Chapter 04 跨網站請求偽造(CSRF)
4.1 CSRF 簡介
4.2 CSRF 進階
4.2.1 瀏覽器的Cookie 策略
4.2.2 P3P 標頭的副作用
4.2.3 GET? POST?
4.2.4 Flash CSRF
4.2.5 C SRF Worm
4.3 CSRF 的防禦
4.3.1 驗證碼
4.3.2 Referer Check
4.3.3 Anti CSRF Token
4.4 小結
Chapter 05 點擊綁架(ClickJacking)
5.1 什麼是點擊綁架
5.2 Flash 點擊綁架
5.3 圖片覆蓋攻擊
5.4 拖曳綁架與資料竊取
5.5 ClickJacking 3.0:觸摸螢幕綁架
5.6 防禦ClickJacking
5.6.1 frame busting
5.6.2 X-Frame-Options
5.7 小結
Chapter 06 HTML 5 安全
6.1 HTML 5 新標籤
6.1.1 新標籤的XSS
6.1.2 iframe 的sandbox
6.1.3 Link Types: noreferrer
6.1.4 Canvas 的妙用
6.2 其他安全問題
6.2.1 Cross-Origin Resource Sharing
6.2.2 postMessage——跨視窗傳遞訊息
6.2.3 Web Storage
6.3 小結
Chapter 07 植入攻擊
7.1 SQL 植入
7.1.1 Blind Injection
7.1.2 Timing Attack
7.2 資料庫攻擊技巧
7.2.1 常見的攻擊技巧
7.2.2 指令執行
7.2.3 攻擊預存程序
7.2.4 編碼問題
7.2.5 SQL Column Truncation
7.3 正確地防禦SQL 植入
7.3.1 使用預先編譯敘述
7.3.2 使用預存程序
7.3.3 檢查資料型態
7.3.4 使用安全函數
7.4 其他植入攻擊
7.4.1 XML 植入
7.4.2 程式植入
7.4.3 CRLF 植入
7.5 小結
Chapter 08 檔案上傳漏洞
8.1 檔案上傳漏洞概述
8.1.1 從FCKEditor 檔案上傳漏洞談起
8.1.2 繞過檔案上傳檢查功能
8.2 功能還是漏洞
8.2.1 Apache 檔案解析問題
8.2.2 IIS 檔案解析問題
8.2.3 PHP CGI 路徑解析問題
8.2.4 利用上傳檔案釣魚
8.3 設計安全的檔案上傳功能
8.4 小結
Chapter 09 認證與階段管理
9.1 Who am I?
9.2 密碼的那些事兒
9.3 多因素認證
9.4 Session 與認證
9.5 Session Fixation 攻擊
9.6 Session 保持攻擊
9.7 單點登入(SSO)
9.8 小結
Chapter 10 造訪控制
10.1 What Can I Do?
10.2 垂直許可權管理
10.3 水平許可權管理
10.4 OAuth 簡介
10.5 小結
Chapter 11 加密演算法與亂數
11.1 概述
11.2 Stream Cipher Attack
11.2.1 Reused Key Attack
11.2.2 Bit-flipping Attack
11.2.3 弱隨機IV 問題
11.3 WEP 破解
11.4 ECB 模式的缺陷
11.5 Padding Oracle Attack
11.6 金鑰管理
11.7 虛擬亂數問題
11.7.1 弱虛擬亂數的麻煩
11.7.2 時間真的隨機嗎
11.7.3 破解虛擬亂數演算法的種子
11.7.4 使用安全的亂數
11.8 小結
Chapter 12 Web 框架安全
12.1 MVC 框架安全
12.2 模版引擎與XSS 防禦
12.3 Web 框架與CSRF 防禦
12.4 HTTP Headers 管理
12.5 資料持久層與SQL 植入
12.6 還能想到什麼
12.7 Web 框架自身安全
12.7.1 Struts 2 指令執行漏洞
12.7.2 Struts 2 的問題更新
12.7.3 Spring MVC 指令執行漏洞
12.7.4 Django 指令執行漏洞
12.8 小結
Chapter 13 應用層拒絕服務攻擊
13.1 DDOS 簡介
13.2 應用層DDOS
13.2.1 CC 攻擊
13.2.2 限制請求頻率
13.2.3 道高一尺,魔高一丈
13.3 驗證碼的那些事兒
13.4 防禦應用層DDOS
13.5 資源耗盡攻擊
13.5.1 Slowloris 攻擊
13.5.2 HTTP POST DOS
13.5.3 Server Limit DOS
13.6 一個正則引發的血案:ReDOS
13.7 小結
Chapter 14 PHP 安全
14.1 標頭檔案漏洞
14.1.1 本機標頭檔案
14.1.2 遠端標頭檔案
14.1.3 本機標頭檔案的利用技巧
14.2 變數覆蓋漏洞
14.2.1 全域變數覆蓋
14.2.2 extract() 變數覆蓋
14.2.3 檢查初始化變數
14.2.4 import_request_variables 變數覆蓋
14.2.5 parse_str() 變數覆蓋
14.3 程式執行漏洞
14.3.1 " 危險函數" 執行程式
14.3.2 " 檔案寫入" 執行程式
14.3.3 其他執行程式方式
14.4 訂製安全的PHP 環境
14.5 小結
Chapter 15 Web Server 設定安全
15.1 Apache 安全
15.2 Nginx 安全
15.3 jBoss 遠端指令執行
15.4 Tomcat 遠端指令執行
15.5 HTTP Parameter Pollution
15.6 小結Chapter
Chapter 16 網際網路業務安全
16.1 產品需要什麼樣的安全
16.1.1 網際網路產品對安全的需求
16.1.2 什麼是好的安全方案
16.2 業務邏輯安全
16.2.1 永遠改不掉的密碼
16.2.2 誰是大贏家
16.2.3 瞞天過海
16.2.4 關於密碼取回流程
16.3 帳戶是如何被盜的
16.3.1 帳戶被盜的途徑
16.3.2 分析帳戶被盜的原因
16.4 網際網路的垃圾
16.4.1 垃圾的危害
16.4.2 垃圾處理
16.5 關於網路釣魚
16.5.1 釣魚網站簡介
16.5.2 郵件釣魚
16.5.3 釣魚網站的防控
16.5.4 網購流程釣魚
16.6 使用者隱私保護
16.6.1 網際網路的使用者隱私挑戰
16.6.2 如何保護使用者隱私
16.6.3 Do-Not-Track
16.7 小結
Chapter 17 安全開發流程(SDL)
17.1 SDL 簡介
17.2 敏捷SDL
17.3 SDL 實戰經驗
17.4 需求分析與設計階段
17.5 開發階段
17.5.1 提供安全的函數
17.5.2 程式安全稽核工具
17.6 測試階段
17.7 小結
Chapter 18 安全營運
18.1 把安全營運起來
18.2 漏洞修補流程
18.3 安全監控
18.4 入侵偵測
18.5 緊急回應流程
18.6 小結