開發者的Web安全戒律:真實威脅與防禦實踐 Web Security for Developers

Malcolm McDonald

商品描述

本書介紹了成為高效Web開發人員所需掌握的基本安全知識,
並將教你為何你的網站容易受到攻擊以及如何保護它們。
每一章都分解了一個主要的安全漏洞,並探討了一個真實的攻擊,
結合大量的代碼,向你展示漏洞和修復方法。

目錄大綱

譯者序
前言
關於作者
關於技術審校
致謝
第1章讓我們了解黑客如何入侵一個網站 1
1.1 軟件漏洞和暗網 1
1.2 黑客如何攻擊網站 2
第2章互聯網的工作原理 5
2.1 互聯網協議套件 5
2.1.1 IP地址 6
2.1.2 域名系統 6
2.2 應用層協議 7
2.3 狀態連接 11
2.4 加密 12
2.5 小結 12
第3章瀏覽器的工作原理 13
3.1 頁面呈現 13
3.1.1 渲染管道:概述 14
3.1.2 文檔對像模型 14
3.1.3 樣式信息 15
3.2 JavaScript 16
3.3 渲染前後:瀏覽器執行的所有其他操作 18
3.4 小結 18
第4章Web服務器的工作方式 20
4.1 靜態資源 20
4.1.1 URL解析 21
4.1.2 內容交付網絡 22
4.1.3 內容管理系統 22
4.2 動態資源 24
4.2.1 模板 24
4.2.2 數據庫 25
4.2.3 分佈式緩存 27
4.2.4 Web編程語言 28
4.3 小結 32
第5章程序員的工作方式 33
5.1 階段1:設計與分析 34
5.2 階段2:編寫代碼 34
5.2.1 分佈式版本控制與集中式版本控制 35
5.2.2 分支和合併代碼 35
5.3 階段3:發布前測試 36
5.3.1 覆蓋範圍和持續集成 37
5.3.2 測試環境 37
5.4 階段4:發布過程 38
5.4.1 發布期間標準化部署的選項 39
5.4.2 編譯過程 41
5.4.3 數據庫遷移腳本 41
5.5 階段5:發布後的測試和觀察 42
5.5.1 滲透測試 42
5.5.2 監控、日誌記錄和錯誤報告 42
5.6 依賴管理 43
5.7 小結 44
第6章註入攻擊 45
6.1 SQL注入 46
6.1.1 什麼是SQL 46
6.1.2 SQL注入攻擊剖析 47
6.1.3 緩解措施1:使用參數化語句 49
6.1.4 緩解措施2:使用對象關係映射 50
6.1.5 額外緩解:使用縱深防禦 51
6.2 命令注入 52
6.2.1 命令注入攻擊剖析 53
6.2.2 緩解措施:轉義控製字符 54
6.3 遠程代碼執行 55
6.3.1 遠程代碼執行剖析 56
6.3.2 緩解措施:在反序列化期間禁用代碼執行 56
6.4 文件上傳漏洞 57
6.4.1 文件上傳攻擊剖析 57
6.4.2 緩解措施 59
6.5 小結 60
第7章跨站點腳本攻擊 62
7.1 存儲型跨站點腳本攻擊 62
7.1.1 緩解措施1:轉義HTML字符 64
7.1.2 緩解措施2:實施內容安全策略 66
7.2 反射型跨站點腳本攻擊 67
7.3 基於DOM的跨站點腳本攻擊 69
7.4 小結 71
第8章跨站點請求偽造攻擊 72
8.1 CSRF攻擊剖析 72
8.2 緩解措施1:遵循REST原則 73
8.3 緩解措施2:使用anti-CSRF cookie 74
8.4 緩解措施3:使用SameSite cookie屬性 75
8.5 額外的緩解措施:敏感動作需要重新驗證 76
8.6 小結 77
第9章破壞身份認證 78
9.1 實施身份認證 78
9.1.1 HTTP本地身份認證 79
9.1.2 非本地認證 80
9.1.3 暴力破解攻擊 80
9.2 緩解措施1:使用第三方身份認證 81
9.3 緩解措施2:與單點登錄集成 81
9.4 緩解措施3:保護自己的身份認證系統 82
9.4.1 需要用戶名、電子郵件地址或兩個都要 82
9.4.2 要求復雜密碼 85
9.4.3 安全地存儲密碼 85
9.4.4 多因素身份認證 87
9.4.5 實現並保護註銷功能 88
9.4.6 防止用戶枚舉 88
9.5 小結 89
第10章會話劫持 91
10.1 會話的工作方式 91
10.1.1 服務器端會話 92
10.1.2 客戶端會話 93
10.2 攻擊者如何劫持會話 95
10.2.1 cookie竊取 95
10.2.2 會話確定 97
10.2.3 利用弱會話ID 98
10.3 小結 99
第11章權限 100
11.1 提權 100
11.2 訪問控制 101
11.2.1 設計授權模型 101
11.2.2 實施訪問控制 103
11.2.3 測試訪問控制 104
11.2.4 添加審計記錄 105
11.2.5 避免常見的疏忽 105
11.3 目錄遍歷 105
11.3.1 文件路徑和相對文件路徑 106
11.3.2 目錄遍歷攻擊剖析 106
11.3.3 緩解措施1:信任你的Web服務器 107
11.3.4 緩解措施2:使用託管服務 108
11.3.5 緩解措施3:使用間接文件引用 108
11.3.6 緩解措施4:淨化文件引用 108
11.4 小結 109
第12章信息洩露 111
12.1 緩解措施1:禁用Telltale Server標頭 111
12.2 緩解措施2:使用乾淨的URL 111
12.3 緩解措施3:使用通用cookie參數 112
12.4 緩解措施4:禁用客戶端錯誤報告 112
12.5 緩解措施5:縮小或模糊處理JavaScript文件 113
12.6 緩解措施6:清理客戶端文件 113
12.7 始終關注安全公告 114
12.8 小結 114
第13章加密 115
13.1 Internet協議中的加密 115
13.1.1 加密算法、哈希和消息身份認證代碼 116
13.1.2 TLS握手 118
13.2 啟用HTTPS 120
13.2.1 數字證書 120
13.2.2 獲取數字證書 121
13.2.3 安裝數字證書 123
13.3 攻擊HTTP(和HTTPS) 126
13.3.1 無線路由器 126
13.3.2 Wi-Fi熱點 127
13.3.3 互聯網服務提供商 127
13.3.4 政府機構 127
13.4 小結 128
第14章第三方代碼 129
14.1 保護依賴項 129
14.1.1 知道你正在運行什麼代碼 130
14.1.2 能夠快速部署新版本 132
14.1.3 對安全問題保持警惕 133
14.1.4 知道什麼時候升級 134
14.2 保護配置 134
14.2.1 禁用默認憑據 135
14.2.2 禁用開放目錄列表 135
14.2.3 保護你的配置信息 135
14.2.4 加固測試環境 136
14.2.5 保護管理前端 136
14.3 保護你使用的服務 137
14.3.1 保護你的API密鑰 137
14.3.2 保護你的webhook 138
14.3.3 第三方提供的安全內容 138
14.4 服務作為攻擊媒介 139
14.4.1 警惕惡意廣告 140
14.4.2 避免惡意軟件傳遞 140
14.4.3 使用信譽良好的廣告平台 141
14.4.4 使用SafeFrame 141
14.4.5 定制廣告偏好設置 142
14.4.6 審查並報告可疑廣告 142
14.5 小結 142
第15章XML攻擊 144
15.1 XML的使用 145
15.2 驗證XML 145
15.3 XML炸彈 147
15.4 XML外部實體攻擊 148
15.5 保護你的XML解析器 150
15.5.1 Python 150
15.5.2 Ruby 150
15.5.3 Node.js 150
15.5.4 Java 150
15.5.5 .NET 151
15.6 其他考慮 151
15.7 小結 151
第16章不要成為幫兇 153
16.1 電子郵件欺詐 154
16.1.1 實施發件人策略框架 155
16.1.2 域密鑰標識郵件 155
16.1.3 保護你的電子郵件:實用步驟 156
16.2 偽裝電子郵件中的惡意鏈接 156
16.2.1 開放重定向 157
16.2.2 防止開放重定向 157
16.2.3 其他考慮 158
16.3 點擊劫持 158
16.4 服務器端請求偽造 160
16.5 殭屍網絡 161
16.6 小結 162
第17章拒絕服務攻擊 163
17.1 拒絕服務攻擊類型 163
17.1.1 互聯網控制消息協議攻擊 164
17.1.2 傳輸控制協議攻擊 164
17.1.3 應用層攻擊 164
17.1.4 反射和放大攻擊 165
17.1.5 分佈式拒絕服務攻擊 165
17.1.6 無意拒絕服務攻擊 166
17.2 拒絕服務攻擊的緩解措施 166
17.2.1 防火牆和入侵防禦系統 166
17.2.2 DDoS保護服務 167
17.2.3 規模擴展 167
17.3 小結 168
第18章總結 170