第 1章 PHP 項目安全概述01
1.1 PHP 項目安全形勢不容樂觀 01
1.2 PHP 項目安全問題産生的原因 03
1.3 PHP 項目安全原則 05
1.3.1 不可信原則 05
1.3.2 最小化原則 06
1.3.3 簡單就是美 07
1.3.4 組件的安全 08
1.4 小結 09
第 2章 PHP 項目安全基礎 10
2.1 信息屏蔽 10
2.1.1 屏蔽PHP 錯誤信息 10
2.1.2 防止版本號暴露 12
2.2 防止全局變量覆蓋 15
2.3 使用PHP 的訪問限製 16
2.3.1 文件係統限製 16
2.3.2 遠程訪問限製 17
2.3.3 開啓安全模式 19
2.3.4 禁用危險函數 21
2.4 PHP 中的Cookie 安全 22
2.4.1 Cookie 的HttpOnly 23
2.4.2 Cookie 的Secure 23
2.4.3 指定Cookie 的使用範圍 23
2.5 PHP 的安裝與升級 24
2.5.1 盡量減少非必要模塊加載 27
2.5.2 使用第三方安全擴展 27
2.6 小結 28
第3章 PHP 編碼安全 29
3.1 弱數據類型安全 29
3.1.1 Hash 比較缺陷 30
3.1.2 bool 比較缺陷 32
3.1.3 數字轉換比較缺陷 34
3.1.4 switch 比較缺陷 37
3.1.5 數組比較缺陷 38
3.2 PHP 代碼執行漏洞 39
3.2.1 代碼執行的函數 39
3.2.2 代碼執行防禦 43
3.3 PHP 變量安全 44
3.3.1 全局變量覆蓋 44
3.3.2 動態變量覆蓋 45
3.3.3 函數extract() 變量覆蓋 47
3.3.4 函數import_request_variables() 變量覆蓋 48
3.3.5 函數parse_str() 變量覆蓋 49
3.4 URL 重定嚮安全 50
3.5 請求僞造攻擊 52
3.5.1 服務器請求僞造 53
3.5.2 SSRF 漏洞的危害 53
3.5.3 在PHP 中容易引起SSRF 的函數 55
3.5.4 容易造成SSRF 的功能點 57
3.5.5 SSRF 漏洞防禦 58
3.6 文件上傳安全 62
3.6.1 文件上傳漏洞的危害 62
3.6.2 文件上傳漏洞 62
3.6.3 檢查文件類型防止上傳漏洞 64
3.6.4 檢查文件擴展名稱防止上傳漏洞 66
3.6.5 文件上傳漏洞的綜閤防護 67
3.7 避免反序列化漏洞 69
3.8 小結 71
第4章 PHP 項目中的常見漏洞與防護 72
4.1 SQL 注入漏洞 72
4.1.1 什麼是SQL 注入 72
4.1.2 報錯注入 74
4.1.3 普通注入 74
4.1.4 隱式類型注入 75
4.1.5 盲注 76
4.1.6 寬字節注入 77
4.1.7 二次解碼注入 78
4.2 SQL 注入漏洞防護 79
4.2.1 MySQL 預編譯處理 79
4.2.2 PHP 使用MySQL 的預編譯處理 81
4.2.3 校驗和過濾 83
4.2.4 寬字節注入防護 86
4.2.5 禁用魔術引號 87
4.3 XML 注入漏洞防護 87
4.4 郵件安全 87
4.4.1 郵件注入 88
4.4.2 防止郵件注入 89
4.5 PHP 組件漏洞防護 90
4.5.1 RSS 安全漏洞 90
4.5.2 PHPMailer 漏洞 91
4.5.3 OpenSSL 漏洞 92
4.5.4 SSL v2.0 協議漏洞 92
4.6 文件包含安全 93
4.6.1 文件包含漏洞 93
4.6.2 避免文件包含漏洞 97
4.7 係統命令注入 99
4.7.1 易發生命令注入的函數 99
4.7.2 防禦命令注入 102
4.8 小結 103
第5章 PHP 與客戶端交互安全 104
5.1 瀏覽器跨域安全 104
5.1.1 瀏覽器同源策略 104
5.1.2 瀏覽器跨域資源共享 106
5.1.3 JSONP 資源加載安全 108
5.2 XSS 漏洞防禦 112
5.2.1 反射型XSS 113
5.2.2 存儲型XSS 115
5.2.3 DOM 型XSS 116
5.2.4 通過編碼過濾和轉換進行防禦 118
5.2.5 開啓HttpOnly 防禦XSS 122
5.2.6 對Cookie 進行IP 綁定 123
5.2.7 瀏覽器策略防禦XSS 124
5.3 警惕瀏覽器繞過 126
5.4 跨站請求僞造防禦 127
5.4.1 CSRF 請求過程 127
5.4.2 CSRF 防禦方法 128
5.5 防止點擊劫持 132
5.6 HTTP 響應拆分漏洞 133
5.7 會話攻擊安全防禦 136
5.7.1 會話泄露 136
5.7.2 會話劫持 138
5.7.3 會話固定 139
5.8 小結 140
第6章 PHP 與密碼安全 141
6.1 用戶密碼安全 141
6.1.1 加密密碼 141
6.1.2 密碼加鹽 142
6.1.3 定期修改 144
6.2 防止暴力破解 144
6.3 隨機數安全 145
6.4 數字摘要 147
6.5 MAC 和HMAC 簡介 148
6.6 對稱加密 150
6.7 非對稱加密 156
6.8 小結 157
第7章 PHP 項目安全進階 158
7.1 單一入口 158
7.1.1 實現方式 158
7.1.2 單一入口更安全 159
7.2 項目部署安全 159
7.2.1 目錄結構 160
7.2.2 目錄權限 161
7.2.3 避免敏感配置硬編碼 162
7.3 保障內容安全 163
7.3.1 不安全的HTTP 傳輸 164
7.3.2 HTTPS 傳輸更安全 166
7.3.3 HTTPS 證書未驗證 168
7.3.4 防止盜鏈 168
7.3.5 敏感詞 170
7.4 防止越權和權限控製 171
7.4.1 什麼是越權訪問 171
7.4.2 造成越權的原因 172
7.4.3 RBAC 控製模型 173
7.4.4 係統鑒權 174
7.4.5 係統隔離 175
7.5 API 接口訪問安全 175
7.5.1 IP 白名單 176
7.5.2 摘要認證 177
7.5.3 OAuth 認證 178
7.6 防止接口重放 181
7.6.1 使用時間戳 181
7.6.2 使用Nonce 182
7.6.3 同時使用時間戳和Nonce 184
7.7 小結 186
第8章 PHP 業務邏輯安全 187
8.1 短信安全 187
8.1.1 短信的安全隱患 187
8.1.2 短信安全策略 188
8.2 敏感信息泄露 189
8.2.1 登錄密碼泄露 189
8.2.2 登錄信息泄露 189
8.2.3 資源遍曆泄露 189
8.2.4 物理路徑泄露 190
8.2.5 程序使用版本泄露 191
8.2.6 JSON 劫持導緻用戶信息泄露 191
8.2.7 源代碼泄露 192
8.3 人機識彆策略 192
8.3.1 圖片驗證碼 193
8.3.2 短信驗證碼 194
8.3.3 語音驗證碼 194
8.3.4 其他驗證方式 196
8.4 常見業務流程安全 196
8.4.1 注冊安全 196
8.4.2 登錄安全 196
8.4.3 密碼找迴安全 198
8.4.4 修改密碼安全 200
8.4.5 支付安全 201
8.5 其他業務安全 202
8.6 小結 203
第9章 應用軟件安全204
9.1 應用指紋安全 204
9.2 服務器端口安全 205
9.3 Apache 的使用安全 208
9.3.1 運行安全 209
9.3.2 訪問安全 210
9.3.3 隱藏Apache 版本號 210
9.3.4 目錄和文件安全 211
9.3.5 防止目錄遍曆 212
9.3.6 日誌配置 214
9.3.7 413 錯誤頁麵跨站腳本漏洞 216
9.3.8 上傳目錄限製 217
9.4 Nginx 的使用安全 217
9.4.1 運行安全 217
9.4.2 項目配置文件 218
9.4.3 日誌配置 218
9.4.4 目錄和文件安全 220
9.4.5 隱藏版本號 220
9.4.6 防止目錄遍曆 221
9.4.7 Nginx 文件類型錯誤解析漏洞 221
9.4.8 IP 訪問限製 223
9.5 MySQL 的使用安全 224
9.5.1 運行安全 225
9.5.2 密碼安全 226
9.5.3 賬號安全 226
9.5.4 數據庫安全 227
9.5.5 限製非授權IP 訪問 228
9.5.6 文件讀取安全 228
9.5.7 常用安全選項 229
9.5.8 數據安全 231
9.6 Redis 的使用安全 231
9.6.1 密碼安全 231
9.6.2 IP 訪問限製 232
9.6.3 運行安全 232
9.7 Memcache 的使用安全 233
9.7.1 IP 訪問限製 233
9.7.2 使用SASL 驗證 234
9.8 小結 237
第 10章 企業研發安全體係建設238
10.1 微軟工程項目安全簡介 238
10.2 OWASP 軟件保障成熟度模型簡介 239
10.3 建立閤理的安全體係 239
10.3.1 製定安全規範標準 239
10.3.2 業務需求安全分析 240
10.3.3 編碼過程安全 241
10.3.4 進行安全測試 241
10.3.5 綫上安全 241
10.4 安全應急響應 241
10.5 小結 242
附錄243
附錄1 PHP 各版本漏洞 243
附錄2 常見PHP 開源係統指紋 276
· · · · · · (
收起)