|
-- 會員 / 註冊 --
|
|
|
|
Web應用安全權威指南 ( 簡體 字) |
作者:[日] ?丸浩 | 類別:1. -> 安全 -> 網路安全 -> 駭客攻擊與入侵 |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 39723 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:10/1/2014 |
頁數:378 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115370471 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 《Web應用安全權威指南》系日本Web安全第一人德丸浩所創,是作者從業多年的經驗總結。作者首先簡要介紹了Web應用的安全隱患以及產生原因,然后詳細介紹了Web安全的基礎,如HTTP、會話管理、同源策略等。此外還重點介紹了Web應用的各種安全隱患,對其產生原理及對策進行了詳盡的講解。最后對如何提高Web網站的安全性和開發安全的Web應用所需要的管理進行了深入的探討。《Web應用安全權威指南》可操作性強,讀者可以通過下載已搭建的虛擬機環境親自體驗書中的各種安全隱患。 《Web應用安全權威指南》適合Web相關的開發人員特別是安全及測試人員閱讀。 |
目錄:第1章 什么是Web應用的安全隱患 1 1-1 安全隱患即“能用于作惡的Bug” 2 1-2 為什么存在安全隱患會有問題 3 經濟損失 3 法律要求 3 對用戶造成不可逆的傷害 4 欺騙用戶 4 被用于構建僵尸網絡 4 1-3 產生安全隱患的原因 6 1-4 安全性Bug與安全性功能 7 1-5 本書的結構 8
第2章 搭建試驗環境 9 2-1 試驗環境概要 10 2-2 安裝VMware Player 11 什么是VMware Player 11 下載VMware Player 11 安裝VMware Player 12 2-3 安裝虛擬機及運行確認 14 虛擬機啟動確認 14 虛擬機的使用方法 15 編輯hosts文件 16 使用ping確認連接 16 Apache與PHP的運行確認 17 設置并確認郵箱賬號 17 2-4 安裝Fiddler 18 什么是Fiddler 18 安裝Fiddler 18 Fiddler的運行確認及簡單用法 18 參考:虛擬機的數據一覽 19 參考:如果無法連接試驗環境的POP3服務器 20
第3章 Web安全基礎:HTTP、會話管理、同源策略 21 3-1 HTTP與會話管理 22 為什么要學習HTTP 22 最簡單的HTTP 22 使用Fiddler觀察HTTP消息 23 請求消息 24 響應消息 24 狀態行 25 響應頭信息 25 如果將HTTP比喻為對話 25 輸入-確認-注冊模式 26 POST方法 28 消息體 28 百分號編碼 29 Referer 29 GET和POST的使用區別 29 hidden參數能夠被更改 30 將hidden參數的更改比作對話 32 hidden參數的優點 32 無狀態的HTTP認證 33 體驗Basic認證 33 專欄 認證與授權 36 Cookie與會話管理 36 使用Cookie的會話管理 39 會話管理的擬人化解說 39 會話ID泄漏的原因 42 Cookie的屬性 42 專欄 Cookie Monster Bug 44 總結 45 3-2 被動攻擊與同源策略 46 主動攻擊與被動攻擊 46 主動攻擊 46 被動攻擊 46 惡意利用正規網站進行的被動攻擊 47 跨站被動攻擊 48 瀏覽器如何防御被動攻擊 48 沙盒 49 同源策略 49 應用程序安全隱患與被動攻擊 52 專欄 第三方JavaScript 53 JavaScript以外的跨域訪問 54 frame元素與iframe元素 54 專欄 X-FRAME-OPTIONS 54 img元素 54 script元素 54 CSS 55 form元素的action屬性 55 總結 56
第4章 Web應用的各種安全隱患 57 4-1 Web應用的功能與安全隱患的對應關系 58 安全隱患產生于何處 58 注入型隱患 59 總結 60 4-2 輸入處理與安全性 61 什么是Web應用的輸入處理 61 檢驗字符編碼 62 轉換字符編碼 62 檢驗并轉換字符編碼的實例 62 專欄 字符編碼的自動轉換與安全性 64 輸入校驗 64 輸入校驗的目的 64 輸入校驗與安全性 65 二進制安全與空字節攻擊 65 僅校驗輸入值并不是安全性策略 66 輸入校驗的依據是應用程序的規格 67 哪些參數需要校驗 67 PHP的正則表達式庫 67 使用正則表達式檢驗輸入值的實例(1) 1∼5個字符的字母數字 68 使用正則表達式檢驗輸入值的實例(2) 住址欄 70 專欄 請注意mb_ereg中的\d與\w 70 范例 70 專欄 輸入校驗與框架 71 總結 72 參考:表示“非控制字符的字符”的正則表達式 73 4-3 頁面顯示的相關問題 75 4.3.1 跨站腳本(基礎篇) 75 概要 75 攻擊手段與影響 76 XSS竊取Cookie值 76 通過JavaScript攻擊 79 篡改網頁 80 反射型XSS與存儲型XSS 82 安全隱患的產生原因 84 HTML轉義的概要 84 元素內容的 XSS 85 沒有用引號括起來的屬性值的 XSS 85 用引號括起來的屬性值的XSS 85 對策 86 XSS對策的基礎 86 指定響應的字符編碼 87 XSS的輔助性對策 88 對策總結 89 參考:使用Perl的對策示例 89 使用Perl進行HTML轉義的方法 89 指定響應的字符編碼 89 4.3.2 跨站腳本(進階篇) 90 href屬性與src屬性的XSS 91 生成URL時的對策. 92 校驗鏈接網址 92 JavaScript的動態生成 92 事件綁定函數的XSS 92 script元素的XSS 94 JavaScript字符串字面量動態生成的對策 95 DOM based XSS 97 允許HTML標簽或CSS時的對策 99 參考:Perl中轉義Unicode的函數 99 4.3.3 錯誤消息導致的信息泄漏 100 總結 100 繼續深入學習 100 4-4 SQL調用相關的安全隱患 101 4.4.1 SQL注入 101 概要 101 攻擊手段與影響 102 示例腳本解說 102 錯誤消息導致的信息泄漏 103 UNION SELECT致使的信息泄漏 104 使用SQL注入繞過認證 104 通過SQL注入攻擊篡改數據 106 其他攻擊 107 專欄 數據庫中表名與列名的調查方法 108 安全隱患的產生原因 109 字符串字面量的問題 109 針對數值的SQL注入攻擊 110 對策 110 使用占位符拼接SQL語句 111 專欄 采用MDB2的原因 111 為什么使用占位符會安全 111 參考:LIKE語句與通配符 113 使用占位符的各種處理 114 SQL注入的輔助性對策 116 總結 117 繼續深入學習 117 參考:無法使用占位符時的對策 117 參考:Perl+MySQL的安全連接方法 118 參考:PHP+PDO+MySQL的安全連接方法 118 參考:Java+MySQL的安全連接方法 118 4-5 關鍵處理中引入的安全隱患 120 4.5.1 跨站請求偽造(CSRF) 120 概要 120 攻擊手段與影響 121 “輸入-執行”模式的CSRF攻擊 121 CSRF攻擊與XSS攻擊 124 存在確認頁面時的CSRF攻擊 125 專欄 針對內部網絡的CSRF攻擊 127 安全隱患的產生原因 128 對策 129 篩選出需要防范CSRF攻擊的頁面 129 確認是正規用戶自愿發送的請求 130 專欄 令牌與一次性令牌 131 CSRF的輔助性對策 133 對策總結 133 4-6 不完善的會話管理 134 4.6.1 會話劫持的原因及影響 134 預測會話ID 134 竊取會話ID 134 挾持會話ID 135 會話劫持的方法總結 135 會話劫持的影響 135 4.6.2 會話 ID可預測 136 概要 136 攻擊手段與影響 136 常見的會話ID生成方法 136 使用推測出的會話ID嘗試偽裝 137 偽裝造成的影響 137 安全隱患的產生原因 137 對策 138 改善PHP的會話ID的隨機性的方法 138 參考:自制會話管理機制產生的其他隱患 139 4.6.3 會話ID嵌入URL 139 概要 139 攻擊手段與影響 140 會話ID嵌入URL所需的條件 140 范例腳本解說 141 通過Referer泄漏會話ID所需的條件 142 攻擊流程 142 事故性的會話ID泄漏 143 影響 144 安全隱患的產生原因 144 對策 144 PHP 144 Java Servlet(J2EE) 145 ASP.NET 145 4.6.4 固定會話ID 145 概要 145 攻擊手段與影響 146 示例腳本介紹 146 會話固定攻擊解說 148 登錄前的會話固定攻擊 148 會話采納 151 僅在Cookie中保存會話ID的網站固定會話ID 151 會話固定攻擊的影響 151 安全隱患的產生原因 152 對策 152 無法更改會話ID時采用令牌 153 登錄前的會話固定攻擊的對策 154 總結 154 4-7 重定向相關的安全隱患 155 4.7.1 自由重定向漏洞 155 概要 155 攻擊手段與影響 156 安全隱患的產生原因 159 允許自由重定向的情況 159 對策 160 固定重定向的目標URL 160 使用編號指定重定向的目標URL 160 校驗重定向的目標域名 160 專欄 警告頁面 162 4.7.2 HTTP消息頭注入 162 概要 162 攻擊手段與影響 163 重定向至外部域名 165 專欄 HTTP響應截斷攻擊 166 生成任意Cookie 166 顯示偽造頁面 168 安全隱患的產生原因 170 專欄 HTTP消息頭與換行 171 對策 171 對策1:不將外界參數作為HTTP響應消息頭輸出 171 對策2:執行以下兩項內容 171 專欄 PHP的header函數中進行的換行符校驗 173 4.7.3 重定向相關的安全隱患總結 173 4-8 Cookie輸出相關的安全隱患 174 4.8.1 Cookie的用途不當 174 不該保存在Cookie中的數據 174 參考:最好不要在Cookie中保存數據的原因 174 專欄 Padding Oracle攻擊與MS10-070 176 4.8.2 Cookie的安全屬性設置不完善 176 概要 176 攻擊手段與影響 177 關于抓包方法的注意點 180 安全隱患的產生原因 181 什么樣的應用程序不能在Cookie中設置安全屬性 181 對策 181 給保存會話ID的Cookie設置安全屬性的方法 182 使用令牌的對策 182 使用令牌能確保安全性的原因 184 除安全屬性外其他屬性值需要注意的地方 184 Domain屬性 184 Path屬性 185 Expires屬性 185 HttpOnly屬性 185 總結 185 4-9 發送郵件的問題 186 4.9.1 發送郵件的問題概要 186 郵件頭注入漏洞 186 使用hidden參數保存收件人信息 186 參考:郵件服務器的開放轉發 187 4.9.2 郵件頭注入漏洞 187 概要 187 攻擊手段與影響 188 攻擊方式1:添加收件人 190 攻擊方式2:篡改正文 191 通過郵件頭注入攻擊添加附件 192 安全隱患的產生原因 193 對策 194 使用專門的程序庫來發送郵件 194 不將外界傳入的參數包含在郵件頭中 194 發送郵件時確保外界傳入的參數中不包含換行符 195 郵件頭注入的輔助性對策 195 總結 196 繼續深入學習 196 4-10 文件處理相關的問題 197 4.10.1 目錄遍歷漏洞 197 概要 197 攻擊手段與影響 198 專欄 從腳本源碼開始的一連串的信息泄漏 200 安全隱患的產生原因 200 對策 201 避免由外界指定文件名 201 文件名中不允許包含目錄名 201 專欄 basename函數與空字節 202 限定文件名中僅包含字母和數字 202 總結 203 4.10.2 內部文件被公開 203 概要 203 攻擊手段與影響 203 安全隱患的產生原因 204 對策 205 參考:Apache中隱藏特定文件的方法 205 4-11 調用OS命令引起的安全隱患 206 4.11.1 OS命令注入 206 概要 206 攻擊手段與影響 207 調用sendmail命令發送郵件 207 OS命令注入攻擊與影響 209 安全隱患的產生原因 210 在Shell中執行多條命令 210 使用了內部調用Shell的函數 211 安全隱患的產生原因總結 212 對策 212 在設計階段決定對策方針 213 選擇不調用OS命令的實現方法 213 避免使用內部調用Shell的函數 213 不將外界輸入的字符串傳遞給命令行參數 216 使用安全的函數對傳遞給OS命令的參數進行轉義 216 OS命令注入攻擊的輔助性對策 217 參考:內部調用Shell的函數 218 4-12 文件上傳相關的問題 219 4.12.1 文件上傳問題的概要 219 針對上傳功能的DoS攻擊 219 專欄 內存使用量與CPU使用時間等其他需要關注的資源 220 使上傳的文件在服務器上作為腳本執行 220 誘使用戶下載惡意文件 221 越權下載文件 222 4.12.2 通過上傳文件使服務器執行腳本 222 概要 222 攻擊手段與影響 223 示例腳本解說 223 專欄 警惕文件名中的XSS 224 PHP腳本的上傳與執行 224 安全隱患的產生原因 225 對策 225 專欄 校驗擴展名時的注意點 228 4.12.3 文件下載引起的跨站腳本 228 概要 228 攻擊手段與影響 229 圖像文件引起的XSS 229 PDF下載引起的XSS 231 安全隱患的產生原因 234 內容為圖像時 234 內容不為圖像時 235 對策 236 文件上傳時的對策 236 專欄 BMP格式的注意點與MS07-057 238 文件下載時的對策 238 其他對策 239 專欄 將圖像托管在其他域名 240 參考:用戶PC中沒有安裝對應的應用程序時 240 總結 241 4-13 include相關的問題 242 4.13.1 文件包含攻擊 242 概要 242 攻擊手段與影響 243 文件包含引發的信息泄漏 244 執行腳本1:遠程文件包含攻擊(RFI) 244 專欄 RFI攻擊的變種 245 執行腳本2:惡意使用保存會話信息的文件 246 安全隱患的產生原因 248 對策 248 總結 248 4-14 eval相關的問題 249 4.14.1 eval注入 249 概要 249 攻擊手段與影響 250 存在漏洞的應用 250 攻擊手段 252 安全隱患的產生原因 253 對策 253 不使用eval 253 避免eval的參數中包含外界傳入的參數 254 限制外界傳入eval的參數中只包含字母和數字 254 參考:Perl的eval代碼塊形式 254 總結 255 繼續深入學習 255 4-15 共享資源相關的問題 256 4.15.1 競態條件漏洞 256 概要 256 攻擊手段與影響 257 安全隱患的產生原因 258 對策 259 避免使用共享資源 259 使用互斥鎖 259 總結 260 參考:Java Servlet的其他注意點 260
第5章 典型安全功能 261 5-1 認證 262 5.1.1 登錄功能 262 針對登錄功能的攻擊 262 通過SQL注入攻擊來跳過登錄功能 262 通過SQL注入攻擊獲取用戶密碼 263 在登錄頁面進行暴力破解 263 通過社會化攻擊得到用戶密碼 263 通過釣魚方法獲取密碼 264 登錄功能被破解后的影響 264 如何防止非法登錄 264 確保系統中不存在SQL注入等安全性Bug 264 設置難以猜測的密碼 265 密碼的字符種類和長度要求 265 密碼的使用現狀 266 應用程序設計中關于密碼的需求 266 嚴格的密碼檢查原則 267 5.1.2 針對暴力破解攻擊的對策 268 初步認識賬號鎖定 268 暴力破解攻擊的檢測和對策 268 字典攻擊 269 Joe賬號檢索 269 逆向暴力破解 269 針對變種暴力破解的對策 269 5.1.3 密碼保存方法 271 保護密碼的必要性 271 利用加密方式進行密碼保護及其注意事項 271 專欄 數據庫加密和密碼保護 272 利用信息摘要來進行密碼保護及其注意事項 272 什么是信息摘要 272 專欄 密碼學級別的散列函數需要滿足的要求 273 利用信息摘要保護密碼 273 威脅1:離線暴力破解 274 威脅2:彩虹破解(Rainbow Crack) 275 威脅3:在用戶數據庫里創建密碼字典 276 如何防止散列值被破解 277 對策1:salt(加鹽) 277 對策2:stretching(延展計算) 278 實現示例 278 專欄 密碼泄露途徑 280 5.1.4 自動登錄 280 危險的實現方式示例 281 安全的自動登錄實現方式 281 延長會話有效期 282 使用令牌實現自動登錄 283 基于認證票的自動登錄方式 286 三種方法的比較 286 如何降低自動登錄帶來的風險 286 5.1.5 登錄表單 286 專欄 密碼確實需要掩碼顯示嗎 287 5.1.6 如何顯示錯誤消息 288 5.1.7 退出登錄功能 289 5.1.8 認證功能總結 290 參考:彩虹表原理 290 5-2 賬號管理 293 5.2.1 用戶注冊 293 郵箱地址確認 293 防止用戶ID重復 295 例子1:ID相同密碼不同可以注冊的網站 295 例子2:用戶ID沒有添加唯一性約束的網站 295 應對自動用戶注冊 296 利用CAPTCHA防止自動注冊 296 5.2.2 修改密碼 297 確認當前密碼 297 修改密碼后向用戶發送郵件通知 298 密碼修改功能容易發生的漏洞 298 5.2.3 修改郵箱地址 298 修改郵箱地址功能要考慮的安全對策 299 5.2.4 密碼找回 299 面向管理員的密碼找回功能 300 面向用戶的密碼找回功能 300 對用戶進行身份確認 301 如何發送密碼通知 301 5.2.5 賬號凍結 302 5.2.6 賬號刪除 303 5.2.7 賬號管理總結 303 5-3 授權 304 5.3.1 什么是授權 304 5.3.2 典型的授權漏洞 304 更改資源ID后可以查看沒有權限查看的信息 304 只控制菜單的顯示或不顯示 305 使用hidden參數或者Cookie保存權限信息 306 授權漏洞總結 307 專欄 將私密信息嵌入URL進行授權處理 307 5.3.3 授權管理的需求設計 307 專欄 什么是角色 308 5.3.4 如何正確實現授權管理 308 5.3.5 總結 309 5-4 日志輸出 310 5.4.1 日志輸出的目的 310 5.4.2 日志種類 310 錯誤日志 311 訪問日志 311 調試日志 311 5.4.3 有關日志輸出的需求 311 需要記錄到日志里的所有事件 312 日志里應包括的信息和格式 312 日志文件保護 312 日志文件保存位置 313 日志文件保存期限 313 服務器的時間調整 313 5.4.4 實現日志輸出 313 5.4.5 總結 314
第6章 字符編碼和安全 315 6-1 字符編碼和安全概要 316 6-2 字符集 317 什么是字符集 317 ASCII和ISO-8859-1 317 JIS規定的字符集 318 微軟標準字符集 318 Unicode 319 GB2312 319 GBK 319 GB18030 320 不同字符相同編碼的問題 320 字符集的處理引起的漏洞 320 6-3 字符編碼方式 321 什么是編碼方式 321 Shift_JIS 321 EUC-JP 325 ISO-2022-JP 326 UTF-16 326 UTF-8 327 GB2312 329 GBK 330 GB18030 331 6-4 由字符編碼引起的漏洞總結 332 字符編碼方式中非法數據導致的漏洞 332 對字符編碼方式處理存在紕漏導致的漏洞 332 在不同字符集間變換導致的漏洞 332 6-5 如何正確處理字符編碼 333 在應用內統一使用的字符集 333 輸入非法數據時報錯并終止處理 335 處理數據時使用正確的編碼方式 335 專欄 調用htmlspecialchars函數時必須指定字符編碼方式 336 輸出時設置正確的字符編碼方式 336 其他對策:盡量避免編碼自動檢測 337 6-6 總結 338
第7章 如何提高Web網站的安全性 339 7-1 針對Web服務器的攻擊途徑和防范措施 341 7.1.1 利用基礎軟件漏洞進行攻擊 341 7.1.2 非法登錄 341 7.1.3 對策 341 停止運行不需要的軟件 342 定期實施漏洞防范措施 342 選定軟件時確認軟件的升級狀況 342 確定打補丁方式 343 關注各種漏洞相關信息 344 確認漏洞后調查補丁狀況以及防范對策、并制定對應計劃 344 執行漏洞對應計劃 345 對不需要對外公開的端口或服務加以訪問限制 346 通過端口掃描確認各端口服務狀態 347 提高認證強度 348 7-2 防范偽裝攻擊的對策 349 7.2.1 網絡偽裝的手段 349 針對DNS服務器的攻擊 349 專欄 VISA域名問題 350 ARP欺騙攻擊 350 7.2.2 釣魚攻擊 350 7.2.3 Web網站的偽裝攻擊對策 351 網絡層的對策 351 同一網段內不放置可能存在漏洞的服務器 351 強化DNS運維 351 引入SSL/TLS 352 專欄 免費的數字證書 354 使用便于記憶的域名 354 7-3 防范網絡監聽、篡改的對策 355 7.3.1 網絡監聽、篡改的途徑 355 通過無線網進行監聽、篡改 355 利用交換機端口鏡像 355 利用代理服務器 355 偽裝成DHCP服務器 355 使用ARP欺騙攻擊和DNS緩存污染攻擊(DNS cache poisoning) 355 7.3.2 中間人攻擊 356 使用Fiddler模擬中間人攻擊 356 專欄 請不要手動安裝證書 358 7.3.3 對策 359 使用SSL時的注意事項 359 專欄 SSL認證標簽 360 7-4 防范惡意軟件的對策 361 7.4.1 什么是Web網站的惡意軟件對策 361 7.4.2 惡意軟件的感染途徑 361 7.4.3 Web網站惡意軟件防范對策概要 362 7.4.4 如何確保服務器不被惡意軟件感染 363 探討是否需要制定針對惡意軟件的防范措施 363 制定病毒防范政策并向用戶公開 363 使用防病毒軟件 364 專欄 Web網站的防病毒對策和Gumblar的關系 365 7-5 總結 366
第8章 開發安全的Web應用所需要的管理 367 8-1 開發管理中的安全對策概要 368 8-2 開發體制 369 開發標準的制定 369 教育培訓 369 8-3 開發過程 371 8.3.1 規劃階段的注意事項 371 8.3.2 招標時的注意事項 371 專欄 誰應該對安全漏洞負責 372 8.3.3 需求分析時的注意事項 372 8.3.4 概要設計的推進方法 373 8.3.5 詳細設計和編碼階段的注意事項 374 8.3.6 安全性測試的重要性及其方法 374 8.3.7 Web健康診斷基準 374 8.3.8 承包方測試 376 8.3.9 發包方測試(驗收) 376 8.3.10 運維階段的注意事項 377 8-4 總結 378 |
序: |
|