PHP安全之道:項目安全的架構、技術與實踐 | 被動收入的投資秘訣 - 2024年7月

PHP安全之道:項目安全的架構、技術與實踐

作者:欒濤
出版社:人民郵電
出版日期:2019年11月01日
ISBN:9787115515278
語言:繁體中文

本書主要面向PHP研發人員,詳細講解PHP項目漏洞的產生原理及防範措施,幫助研發人員在專案研發過程中規避風險。全書共有10章。第1章講述PHP項目安全問題的主要形成原因以及解決PHP項目安全問題的原則;第2章講述PHP專案安全的基礎,以使研發人員瞭解PHP語言自身的安全機制;第3章通過講解PHP編碼過程中需要注意的安全問題,幫助研發人員正確運用PHP函數及變數轉換;第4章闡述常見的漏洞並給出了相應的處理方式,涉及SQL注入漏洞、XML注入漏洞、郵件安全、PHP元件安全、檔包含安全、系統命令注入等方面,幫助研發人員在專案初期即能有效防範漏洞問題;第5章講述PHP與用戶端交互過程中存在的安全隱患及解決方案,包括流覽器安全邊界、用戶端指令碼攻擊、偽造劫持等一系列和客戶端相關的安全防護;第6章講述在PHP專案中常用的加密方式及其應用場景;第7章講述PHP專案安全的進階知識,幫助研發人員在更高的角度防範風險;第8章從PHP業務邏輯安全的角度講述每個業務場景的安全防範路徑,以進一步提升研發人員在PHP專案實戰中對安全問題的認識,並提高解決具體業務安全問題的能力;第9章講述PHP的各種支撐軟體的安全應用問題;第10章講述如何建立有安全保障的企業研發體系。

對於PHP專案的安全問題,本書不僅進行了系統性的闡釋,給出了體系化的安全問題解決之道,還通過豐富的小示例幫助讀者在平常工作中得以見微知著,並能防微杜漸,增強安全意識,提高安全警惕,不放過任何威脅到項目安全的“細枝末節”。因而,本書不僅適合PHP研發人員,也適合網路安全技術人員參閱。

欒濤

資訊安全專家、資深研發工程師、架構師,先後就職於奇虎360、滴滴出行,參與設計和研發了多種大型業務系統和大型資訊安全系統,擅長大型微服務、資訊安全、大資料等各類業務架構支撐與實施工作,在安全防護、監測、掃描等大型系統的設計與研發上有著豐富的實戰經驗。

第 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 防止介面重放 1817.6.1 使用時間戳記 1817.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


相關書籍