編寫安全的移動應用程式——基於PHP和JavaScript技術

編寫安全的移動應用程式——基於PHP和JavaScript技術

《編寫安全的移動應用程式——基於PHP和JavaScript技術》是2021年清華大學出版社出版的圖書。

基本介紹

  • 中文名:編寫安全的移動應用程式——基於PHP和JavaScript技術
  • 作者:[美]J.D.格拉瑟(J.D.Glaser) 
  • 譯者:吳驊
  • 出版時間:2021年9月
  • 出版社: 清華大學出版社
  • ISBN: 9787302588054
內容簡介,圖書目錄,

內容簡介

《編寫安全的移動應用程式—基於PHP和JavaScript技術》詳細闡述了與編寫安全的移動應用程式相關的基本解決方案,主要包括Web應用程式攻擊界面,PHP安全反模式,PHP基本安全,PHP安全工具概覽,基於UTF-8的PHP和MySQL,項目布局模板,關注點分離,PHP和PDO,模板策略模式,現代PHP加密技術,異常和錯誤處理,安全的會話管理,安全的會話存儲,安全的表單和賬戶註冊,安全的客戶端伺服器表單驗證,安全的檔案上傳機制,安全的JSON請求,Google Maps、YouTube和jQuery Mobile,Twitter身份驗證和SSL cURL,安全的AJAX購物車,常見的Facebook漏洞點等內容。此外,本書還提供了相應的示例,以幫助讀者進一步理解相關方案的實現過程。
本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學用書和參考手冊。

圖書目錄

第1部分
第1章 概述 3
1.1 理解安全的Web開發 3
1.1.1 適用讀者 3
1.1.2 本書未涉及的內容 4
1.1.3 背景知識 4
1.1.4 安全工具 5
1.1.5 在項目間創建一致性的可復用代碼 5
1.2 基於HTML5、AJAX和jQuery Mobile的移動應用程式 5
1.3 移動應用程式—社交混搭 5
1.3.1 客戶端技術 6
1.3.2 客戶端應用程式布局 6
1.3.3 伺服器應用程式 6
1.4 安全措施的演變 6
1.4.1 SQL注入和CSRF 7
1.4.2 輸出上下文攻擊 7
1.4.3 HTML5新技術 8
1.4.4 實踐與漏洞 8
1.4.5 安全擴展外掛程式 8
1.4.6 信息缺失 8
1.4.7 一致性缺失 9
1.5 Web應用程式安全的新思路 9
第2章 Web應用程式攻擊界面 15
2.1 攻擊途徑 15
2.2 常見威脅 16
2.2.1 SQL注入 16
2.2.2 跨站點腳本 17
2.2.3 跨站點請求偽造 18
2.2.4 會話劫持 18
2.3 保護輸入和輸出流 19
2.3.1 GET請求 19
2.3.2 POST請求 20
2.3.3 Cookie數據 21
2.3.4 會話固定 21
2.3.5 跨站點請求偽造 21
2.4 輸入過濾和輸出轉義的理論知識 25
2.4.1 輸入驗證 26
2.4.2 輸入過濾 26
2.4.3 輸出轉義 27
2.4.4 數據的顯示位置 28
2.5 OWASP XSS Prevention Rules 28
第3章 PHP安全反模式 37
3.1 反模式 37
3.2 不使用內容安全策略反模式進行設計 38
3.3 單一尺寸適合所有的反模式 38
3.4 錯誤的反模式 38
3.4.1 經驗式反模式 39
3.4.2 關鍵數據類型的理解和分析 40
3.4.3 單一數據類型反模式 40
3.5 全部輸入的HTTP數據均為字元串 44
3.5.1 類型驗證 46
3.5.2 輸入內容與輸出內容相同 48
3.5.3 假定的“乾淨”數據 49
3.5.4 mysql_real_escape_string()的錯誤使用方式 49
3.5.5 過濾、轉義和編碼 50
3.5.6 單一輸出上下文 51
3.5.7 缺乏規劃 51
3.5.8 一致性缺失 52
3.5.9 缺少應有的測試 52
3.5.10 參數遺漏 52
3.6 設計實踐 55
3.6.1 HTML和PHP代碼的分離 55
3.6.2 過多的資料庫函式調用 55
3.6.3 錯誤的過濾機制 56
3.6.4 過多的引號 57
3.6.5 原始請求變數作為應用程式變數 57
3.6.6 直接URL輸入 58
3.6.7 錯誤管理操作 59
3.6.8 加密操作 59
3.6.9 Cookie過期 60
3.6.10 會話管理 61
3.7 消除反模式:模式、測試、自動化 61
第4章 PHP基本安全 63
4.1 一致的UTF-8字元集 63
4.1.1 資料庫中的UTF-8 64
4.1.2 PHP應用程式中的UTF-8 64
4.1.3 客戶瀏覽器中的UTF-8 65
4.2 清理安全數據 65
4.2.1 輸入驗證—尺寸和類型 65
4.2.2 轉義輸出—考查上下文 65
4.2.3 資料庫訪問模式 66
4.2.4 應用程式秘密位置模式 66
4.2.5 錯誤處理模式 66
4.2.6 錯誤的日誌處理模式 67
4.2.7 身份驗證 67
4.2.8 授權模式 67
4.2.9 可接受的白名單輸入 67
4.3 最佳實踐方案小結 68
4.3.1 架構應用程式字元集 68
4.3.2 架構HTTP請求模式 68
4.3.3 架構HTTP Cookie套用 69
4.3.4 架構輸入驗證 69
4.3.5 架構輸出轉義 69
4.3.6 架構會話管理 70
4.3.7 保護機密檔案/保護包含的檔案 70
4.3.8 保護用戶密碼 70
4.3.9 保護用戶會話數據 70
4.3.10 防護CSRF攻擊 71
4.3.11 防護SQL注入攻擊 71
4.3.12 防護XSS攻擊 71
4.3.13 防護檔案系統攻擊 71
4.3.14 相應的錯誤管理機制 71
4.4 PHP的OWASP推薦方案 72
4.4.1 檢查表 72
4.4.2 附加的PHP安全檢查表 73
4.4.3 禁用危險的PHP函式 74
第5章 PHP安全工具概覽 75
5.1 對象語言 75
5.1.1 抽象類、接口、外觀、模板、策略、工廠和訪問者 75
5.1.2 DRY 78
5.2 本地函式支持 79
5.2.1 編碼函式 79
5.2.2 DRY強制函式 81
5.2.3 類型強制函式 82
5.2.4 過濾器函式 83
5.2.5 移動函式 86
5.2.6 加密和哈希函式 87
5.2.7 現代加密 87
5.2.8 現代哈希方法 89
5.2.9 現代salt機制和隨機機制 89
5.2.10 HTML模板支持 89
5.2.11 內聯定界符函式 90
5.3 最佳實踐方案 92
5.3.1 儘可能使用整數值 92
5.3.2 使用類型強制 93
5.3.3 強制字元串大小和數字範圍 93
5.3.4 在過濾前剪裁字元串 94
5.3.5 保持較小的字元串 94
5.3.6 要避免的問題 94
5.4 PDO預處理語句 96
5.5 棄用的安全函式 97
第6章 基於UTF-8的PHP和MySQL 99
6.1 UTF-8 99
6.1.1 UTF-8的優缺點 99
6.1.2 UTF-8的安全性 100
6.2 完整的PHP UTF-8設定 100
6.2.1 UTF-8 MySQL資料庫和表創建 100
6.2.2 UTF-8 PDO客戶端連線 102
6.2.3 手動UTF-8 PDO/MySQL連線 103
6.2.4 PHP UTF-8初始化和安裝 103
6.3 UTF-8瀏覽器設定 104
6.3.1 頭設定 104
6.3.2 元標籤設定 104
6.3.3 表單設定 105
6.4 PHP UTF-8多位元組函式 105
6.4.1 UTF-8輸入驗證函式 105
6.4.2 UTF-8字元串函式 106
6.4.3 UTF-8輸出函式 107
6.4.4 UTF-8郵件 108
6.5 PHPUnit測試中的UTF-8配置 109
6.5.1 測試PHP內部編碼 109
6.5.2 測試PHP輸出編碼 109
6.5.3 斷言UTF-8配置的PHPUnit Test類 110
第7章 項目布局模板 115
7.1 應用程式中的相似性 115
7.1.1 項目布局應採用一致性方式進行處理 115
7.1.2 選擇查詢封裝器 118
7.1.3 HTML靜態資源的分離 119
7.2 完整的注釋檔案 120
第8章 關注點分離 121
8.1 什麼是關注點分離 121
8.2 保持HTML為HTML 122
8.3 令PHP遠離HTML 122
8.4 令JavaScript遠離HTML 124
8.5 內容安全性策略 126
8.6 HTML中的ID和類 127
8.7 小結 128
第9章 PHP和PDO 129
9.1 PDO UTF-8連線 130
9.2 MySQL UTF-8和表創建 131
9.3 PDO預處理語句 132
9.3.1 PDO命名參數示例 133
9.3.2 PDO未命名參數示例 133
9.3.3 PDO類對象示例 135
9.4 選擇數據並置入HTML和URL上下文 135
9.5 引用值和資料庫類型轉換 138
9.5.1 PDO手工引用示例 139
9.5.2 PDO和WHERE IN語句 139
9.6 白名單機制和PDO列名引用 140
9.7 小結 141
第10章 模板策略模式 143
10.1 模板模式強制執行流程 143
10.1.1 賬戶註冊模板 143
10.1.2 賬戶註冊模板—激活 145
10.2 輸出轉義的策略模式 147
10.2.1 轉義策略類 147
10.2.2 改進的轉義策略類 150
10.3 Cleaner類 153
10.3.1 測試Cleaner類 158
10.3.2 Cleaner::getKey()驗證套用示例 159
第11章 現代PHP加密技術 161
11.1 使用MCrypt進行雙向加密 161
11.2 利用Blowfish加密哈希密碼 165
第12章 異常和錯誤處理 167
12.1 配置PHP錯誤環境 168
12.1.1 安全的php.ini和錯誤日誌檔案 168
12.1.2 錯誤選項簡介 169
12.1.3 生產環境下的php.ini錯誤配置 170
12.1.4 開發環境下的php.ini錯誤配置 170
12.1.5 PHP錯誤級別常量 171
12.2 異常處理機制 172
12.3 捕獲所有錯誤和異常 177
12.3.1 將錯誤轉換為異常 177
12.3.2 錯誤處理函式的規範 177
12.3.3 處理程式的返回值 178
12.4 ErrorManager類 178
12.5 利用register_shutdown_function()處理致命錯誤 179
第2部分
第13章 安全的會話管理 185
13.1 SSL登錄頁面 185
13.1.1 安全會話管理簡介 186
13.1.2 安全會話管理檢查表 186
13.1.3 檢查表的詳細內容 187
13.1.4 設定配置內容 192
13.1.5 監控會話篡改 194
13.1.6 檢測用戶代理的更改—篡改防護的最佳實踐方案 195
13.2 通過SSL強制頁面請求 196
13.2.1 SSL重定向 196
13.2.2 協定相關連結 196
第14章 安全的會話存儲 199
14.1 PHP默認會話存儲 199
14.1.1 會話存儲的生命周期 200
14.1.2 會話鎖 201
14.1.3 AJAX和會話鎖 201
14.2 會話管理配置 201
14.2.1 在session_start()調用前配置安全項 202
14.2.2 正確地銷毀會話 205
14.3 加密會話存儲 206
14.3.1 通過MySQL加密會話存儲 206
14.3.2 在MySQL中創建自定義會話處理程式 206
14.3.3 SecureSessionPDO類 208
14.3.4 評論和決策時間 216
14.3.5 類成員函式的細節內容 217
14.3.6 通過檔案系統加密會話存儲 228
14.3.7 SecureSessionFile類 229
14.3.8 SecureSessionFile類的細節內容 234
第15章 安全的表單和賬戶註冊 243
15.1 安全的用戶註冊和登錄處理 243
15.2 SSL上的安全表單登錄頁面 245
15.3 安全的表單nonce—防止CSRF 245
15.4 NonceTracker類 246
15.4.1 NonceTracker類的詳細信息 246
15.4.2 NonceTracker類的具體解釋 248
15.5 表單輸入驗證 250
15.5.1 註冊表單 252
15.5.2 註冊表單的細節內容 256
15.5.3 用戶密碼的雙重加密 258
15.6 賬戶管理類 261
15.6.1 AccountManager類細節內容和授權檢測 266
15.6.2 電子郵件驗證和激活系統 267
15.6.3 基於Blowfish輪數的加密強度 273
15.6.4 安全的密碼請求連結 275
15.6.5 許可權提升後的重新授權 276
15.7 SessionManager類 277
15.7.1 SessionManagement類的詳細內容 280
15.7.2 基於essionManager的安全註銷 282
15.8 許可權提升保護系統 283
15.9 安全的登錄 285
15.9.1 安全的登錄表單 285
15.9.2 安全的登錄表單細節 287
15.10 通過身份驗證保護頁面 290
15.11 安全的註銷頁面 290
15.12 安全的RememberMe特性 292
第16章 安全的客戶端伺服器表單驗證 297
16.1 PHP UTF-8輸入驗證 297
16.1.1 伺服器UTF-8驗證 297
16.1.2 通過RegEx驗證UTF-8名稱和電子郵件 298
16.1.3 電子郵件地址的清除工作 300
16.2 PREG 301
16.2.1 伺服器端的正則表達式 301
16.2.2 基於正則表達式的JavaScript驗證 307
16.2.3 基於正則表達式的jQuery驗證 308
16.3 jQuery密碼強度計 311
16.4 JavaScript和jQuery轉義和過濾 313
16.4.1 利用innerText替換innerHTML 315
16.4.2 嵌入式HTML超連結—innerHTML中的問題 315
16.4.3 不安全的JavaScript函式 318
16.5 防止雙重表單提交 318
16.5.1 表單處理的Post-Redirect-Get模式 319
16.5.2 PRG模式 320
16.5.3 PRG指令 321
16.5.4 跟蹤表單標記以防止重複提交 323
16.6 控制表單頁面快取和頁面過期 325
16.6.1 主快取-控制設定 326
16.6.2 微軟IE擴展 327
16.6.3 AJAX GET請求的時間戳機制 327
16.6.4 構建安全的GET請求URL 327
第17章 安全的檔案上傳機制 329
17.1 基本原則 329
17.2 基於資料庫的安全的檔案上傳機制 331
第18章 安全的JSON請求 339
18.1 構建安全的JSON回響 339
18.1.1 正確和錯誤的JSON 339
18.1.2 正確的JSON結構依賴於數組結構 340
18.1.3 利用PDO記錄構造安全的數組 342
18.2 在PHP中傳送和接收JSON 343
18.2.1 從PHP傳送JSON 343
18.2.2 在PHP中接收JSON 347
18.3 利用JavaScript/jQuery安全地解析JSON 347
18.3.1 jQuery JSON調用 348
18.3.2 POST和解析JSON回響示例 349
第3部分
第19章 Google Maps、YouTube和jQuery Mobile 353
19.1 代碼構建 353
19.2 在Google Map InfoWindows中設定視頻 354
19.3 生成InfoWindow Marker 354
19.3.1 HTML和jQuery Mobile布局 355
19.3.2 關注點分離 357
19.3.3 HTML片段描述 358
19.3.4 YouTube元素描述 359
19.3.5 JavaScript檔案:gmap.js 360
19.3.6 基於可播放視頻的InfoWindow Marker 366
19.4 Map Marker資料庫表 370
19.5 資料庫類GMapData 371
19.5.1 處理標記 373
19.5.2 生成標記 373
19.5.3 插入和更新標記 376
19.6 準備安全的JSON數據 380
第20章 Twitter身份驗證和SSL cURL 385
20.1 基於PHP的Twitter 385
20.2 TweetFetcher類 386
20.3 通過TweetFetcher讀取tweet 391
20.3.1 獲取Twitter oAuth令牌 391
20.3.2 針對cURL設定SSL身份驗證 392
20.3.3 從時間軸上檢索最新的tweet 393
20.3.4 創建和過濾純文本中的超連結 393
20.4 過濾不良的tweet 396
20.5 使用TweetFetcher 397
第21章 安全的AJAX購物車 401
21.1 移動商店 402
21.1.1 向購物車中添加商品 405
21.1.2 從購物車中移除商品 413
21.2 利用PayPal購物 414
21.2.1 開始PayPal事務 415
21.2.2 安全地向PayPal付款 419
21.2.3 完成PayPal購買行為 421
21.3 小結 426
第22章 常見的Facebook漏洞點 427
22.1 通過PDO保存Facebook實時更新 427
22.2 反射JSON坐標 428
22.3 反射訊息 429
22.4 反射URL 429
22.5 JavaScript和jQuery過濾器 429
22.6 JSONP預防措施 431
參考文獻 433
附錄 435
線上資源 435
理解編碼器背後的正則表達式 435
根據最新的安全警告檢查HTML頭 436
支持網站 436
推薦讀物 437

相關詞條

熱門詞條

聯絡我們