編寫安全的移動應用程序 — 基於 PHP 和 JavaScript 技術 (Secure Development for Mobile Apps: How to Design and Code Secure Mobile Applications with PHP and JavaScript)

編寫安全的移動應用程序 — 基於 PHP 和 JavaScript 技術 (Secure Development for Mobile Apps: How to Design and Code Secure Mobile Applications with PHP and JavaScript)

作者: [美]J.D.格拉瑟(J.D.Glaser) 吳驊 譯
出版社: 清華大學
出版在: 2021-09-01
ISBN-13: 9787302588054
ISBN-10: 7302588058
裝訂格式: 平裝
總頁數: 437 頁





內容描述


《編寫安全的移動應用程序—基於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章 概述
1.1 理解安全的Web開發
1.1.1 適用讀者
1.1.2 本書未涉及的內容
1.1.3 背景知識
1.1.4 安全工具
1.1.5 在項目間創建一致性的可複用代碼
1.2 基於HTML5、AJAX和jQuery Mobile的移動應用程序
1.3 移動應用程序—社交混搭
1.3.1 客戶端技術
1.3.2 客戶端應用程序佈局
1.3.3 服務器應用程序
1.4 安全措施的演變
1.4.1 SQL注入和CSRF
1.4.2 輸出上下文攻擊
1.4.3 HTML5新技術
1.4.4 實踐與漏洞
1.4.5 安全擴展插件
1.4.6 信息缺失
1.4.7 一致性缺失
1.5 Web應用程序安全的新思路
第2章 Web應用程序攻擊界面
2.1 攻擊途徑
2.2 常見威脅
2.2.1 SQL注入
2.2.2 跨站點腳本
2.2.3 跨站點請求偽造
2.2.4 會話劫持
2.3 保護輸入和輸出流
2.3.1 GET請求
2.3.2 POST請求
2.3.3 Cookie數據
2.3.4 會話固定
2.3.5 跨站點請求偽造
2.4 輸入過濾和輸出轉義的理論知識
2.4.1 輸入驗證
2.4.2 輸入過濾
2.4.3 輸出轉義
2.4.4 數據的顯示位置
2.5 OWASP XSS Prevention Rules
第3章 PHP安全反模式
3.1 反模式
3.2 不使用內容安全策略反模式進行設計
3.3 單一尺寸適合所有的反模式
3.4 錯誤的反模式
3.4.1 經驗式反模式
3.4.2 關鍵數據類型的理解和分析
3.4.3 單一數據類型反模式
3.5 全部輸入的HTTP數據均為字符串
3.5.1 類型驗證
3.5.2 輸入內容與輸出內容相同
3.5.3 假定的“乾淨”數據
3.5.4 mysql_real_escape_string()的錯誤使用方式
3.5.5 過濾、轉義和編碼
3.5.6 單一輸出上下文
3.5.7 缺乏規劃
3.5.8 一致性缺失
3.5.9 缺少應有的測試
3.5.10 參數遺漏
3.6 設計實踐
3.6.1 HTML和PHP代碼的分離
3.6.2 過多的數據庫函數調用
3.6.3 錯誤的過濾機制
3.6.4 過多的引號
3.6.5 原始請求變量作為應用程序變量
3.6.6 直接URL輸入
3.6.7 錯誤管理操作
3.6.8 加密操作
3.6.9 Cookie過期
3.6.10 會話管理
3.7 消除反模式:模式、測試、自動化
第4章 PHP基本安全
4.1 一致的UTF-8字符集
4.1.1 數據庫中的UTF-8
4.1.2 PHP應用程序中的UTF-8
4.1.3 客戶瀏覽器中的UTF-8
4.2 清理安全數據
4.2.1 輸入驗證—尺寸和類型
4.2.2 轉義輸出—考查上下文
4.2.3 數據庫訪問模式
4.2.4 應用程序秘密位置模式
4.2.5 錯誤處理模式
4.2.6 錯誤的日誌處理模式
4.2.7 身份驗證
4.2.8 授權模式
4.2.9 可接受的白名單輸入
4.3 最佳實踐方案小結
4.3.1 架構應用程序字符集
4.3.2 架構HTTP請求模式
4.3.3 架構HTTP Cookie應用
4.3.4 架構輸入驗證
4.3.5 架構輸出轉義
4.3.6 架構會話管理
4.3.7 保護機密文件/保護包含的文件
4.3.8 保護用戶密碼
4.3.9 保護用戶會話數據
4.3.10 防護CSRF攻擊
4.3.11 防護SQL注入攻擊
4.3.12 防護XSS攻擊
4.3.13 防護文件系統攻擊
4.3.14 相應的錯誤管理機制
4.4 PHP的OWASP推薦方案
4.4.1 檢查表
4.4.2 附加的PHP安全檢查表
4.4.3 禁用危險的PHP函數
第5章 PHP安全工具概覽
5.1 對象語言
5.1.1 抽像類、接口、外觀、模板、策略、工廠和訪問者
5.1.2 DRY
5.2 本地函數支持
5.2.1 編碼函數
5.2.2 DRY強制函數
5.2.3 類型強制函數
5.2.4 過濾器函數
5.2.5 移動函數
5.2.6 加密和哈希函數
5.2.7 現代加密
5.2.8 現代哈希方法
5.2.9 現代salt機制和隨機機制
5.2.10 HTML模板支持
5.2.11 內聯定界符函數
5.3 最佳實踐方案
5.3.1 盡可能使用整數值
5.3.2 使用類型強制
5.3.3 強製字符串大小和數字範圍
5.3.4 在過濾前剪裁字符串
5.3.5 保持較小的字符串
5.3.6 要避免的問題
5.4 PDO預處理語句
5.5 棄用的安全函數
第6章 基於UTF-8的PHP和MySQL
6.1 UTF-8
6.1.1 UTF-8的優缺點
6.1.2 UTF-8的安全性
6.2 完整的PHP UTF-8設置
6.2.1 UTF-8 MySQL數據庫和表創建
6.2.2 UTF-8 PDO客戶端連接
6.2.3 手動UTF-8 PDO/MySQL連接
6.2.4 PHP UTF-8初始化和安裝
6.3 UTF-8瀏覽器設置
6.3.1 頭設置
6.3.2 元標籤設置
6.3.3 表單設置
6.4 PHP UTF-8多字節函數
6.4.1 UTF-8輸入驗證函數
6.4.2 UTF-8字符串函數
6.4.3 UTF-8輸出函數
6.4.4 UTF-8郵件
6.5 PHPUnit測試中的UTF-8配置
6.5.1 測試PHP內部編碼
6.5.2 測試PHP輸出編碼
6.5.3 斷言UTF-8配置的PHPUnit Test類
第7章 項目佈局模板
7.1 應用程序中的相似性
7.1.1 項目佈局應採用一致性方式進行處理
7.1.2 選擇查詢封裝器
7.1.3 HTML靜態資源的分離
7.2 完整的註釋文件
第8章 關注點分離
8.1 什麼是關注點分離
8.2 保持HTML為HTML
8.3 令PHP遠離HTML
8.4 令JavaScript遠離HTML
8.5 內容安全性策略
8.6 HTML中的ID和類
8.7 小結
第9章 PHP和PDO
9.1 PDO UTF-8連接
9.2 MySQL UTF-8和表創建
9.3 PDO預處理語句
9.3.1 PDO命名參數示例
9.3.2 PDO未命名參數示例
9.3.3 PDO類對象示例
9.4 選擇數據並置入HTML和URL上下文
9.5 引用值和數據庫類型轉換
9.5.1 PDO手工引用示例
9.5.2 PDO和WHERE IN語句
9.6 白名單機制和PDO列名引用
9.7 小結
第10章 模板策略模式
10.1 模板模式強制執行流程
10.1.1 賬戶註冊模板
10.1.2 賬戶註冊模板—激活
10.2 輸出轉義的策略模式
10.2.1 轉義策略類
10.2.2 改進的轉義策略類
10.3 Cleaner類
10.3.1 測試Cleaner類
10.3.2 Cleaner::getKey()驗證應用示例
第11章 現代PHP加密技術
11.1 使用MCrypt進行雙向加密
11.2 利用Blowfish加密哈希密碼
第12章 異常和錯誤處理
12.1 配置PHP錯誤環境
12.1.1 安全的php.ini和錯誤日誌文件
12.1.2 錯誤選項簡介
12.1.3 生產環境下的php.ini錯誤配置
12.1.4 開發環境下的php.ini錯誤配置
12.1.5 PHP錯誤級別常量
12.2 異常處理機制
12.3 捕獲所有錯誤和異常
12.3.1 將錯誤轉換為異常
12.3.2 錯誤處理函數的規範
12.3.3 處理程序的返回值
12.4 ErrorManager類
12.5 利用register_shutdown_function()處理致命錯誤
第2部分
第13章 安全的會話管理
13.1 SSL登錄頁面
13.1.1 安全會話管理簡介
13.1.2 安全會話管理檢查表
13.1.3 檢查表的詳細內容
13.1.4 設置配置內容
13.1.5 監控會話篡改
13.1.6 檢測用戶代理的更改—篡改防護的最佳實踐方案
13.2 通過SSL強制頁面請求
13.2.1 SSL重定向
13.2.2 協議相關鏈接
第14章 安全的會話存儲
14.1 PHP默認會話存儲
14.1.1 會話存儲的生命週期
14.1.2 會話鎖
14.1.3 AJAX和會話鎖
14.2 會話管理配置
14.2.1 在session_start()調用前配置安全項
14.2.2 正確地銷毀會話
14.3 加密會話存儲
14.3.1 通過MySQL加密會話存儲
14.3.2 在MySQL中創建自定義會話處理程序
14.3.3 SecureSessionPDO類
14.3.4 評論和決策時間
14.3.5 類成員函數的細節內容
14.3.6 通過文件系統加密會話存儲
14.3.7 SecureSessionFile類
14.3.8 SecureSessionFile類的細節內容
第15章 安全的表單和賬戶註冊
15.1 安全的用戶註冊和登錄處理
15.2 SSL上的安全表單登錄頁面
15.3 安全的表單nonce—防止CSRF
15.4 NonceTracker類
15.4.1 NonceTracker類的詳細信息
15.4.2 NonceTracker類的具體解釋
15.5 表單輸入驗證
15.5.1 註冊表單
15.5.2 註冊表單的細節內容
15.5.3 用戶密碼的雙重加密
15.6 賬戶管理類
15.6.1 AccountManager類細節內容和授權檢測
15.6.2 電子郵件驗證和激活系統
15.6.3 基於Blowfish輪數的加密強度
15.6.4 安全的密碼請求鏈接
15.6.5 權限提升後的重新授權
15.7 SessionManager類
15.7.1 SessionManagement類的詳細內容
15.7.2 基於essionManager的安全註銷
15.8 權限提升保護系統
15.9 安全的登錄
15.9.1 安全的登錄表單
15.9.2 安全的登錄表單細節
15.10 通過身份驗證保護頁面
15.11 安全的註銷頁面
15.12 安全的RememberMe特性
第16章 安全的客戶端服務器表單驗證
16.1 PHP UTF-8輸入驗證
16.1.1 服務器UTF-8驗證
16.1.2 通過RegEx驗證UTF-8名稱和電子郵件
16.1.3 電子郵件地址的清除工作
16.2 PREG
16.2.1 服務器端的正則表達式
16.2.2 基於正則表達式的JavaScript驗證
16.2.3 基於正則表達式的jQuery驗證
16.3 jQuery密碼強度計
16.4 JavaScript和jQuery轉義和過濾
16.4.1 利用innerText替換innerHTML
16.4.2 嵌入式HTML超鏈接—innerHTML中的問題
16.4.3 不安全的JavaScript函數
16.5 防止雙重表單提交
16.5.1 表單處理的Post-Redirect-Get模式
16.5.2 PRG模式
16.5.3 PRG指令
16.5.4 跟踪表單標記以防止重複提交
16.6 控製表單頁面緩存和頁面過期
16.6.1 主緩存-控制設置
16.6.2 微軟IE擴展
16.6.3 AJAX GET請求的時間戳機制
16.6.4 構建安全的GET請求URL
第17章 安全的文件上傳機制
17.1 基本原則
17.2 基於數據庫的安全的文件上傳機制
第18章 安全的JSON請求
18.1 構建安全的JSON響應
18.1.1 正確和錯誤的JSON
18.1.2 正確的JSON結構依賴於數組結構
18.1.3 利用PDO記錄構造安全的數組
18.2 在PHP中發送和接收JSON
18.2.1 從PHP發送JSON
18.2.2 在PHP中接收JSON
18.3 利用JavaScript/jQuery安全地解析JSON
18.3.1 jQuery JSON調用
18.3.2 POST和解析JSON響應示例
第3部分
第19章 Google Maps、YouTube和jQuery Mobile
19.1 代碼構建
19.2 在Google Map InfoWindows中設置視頻
19.3 生成InfoWindow Marker
19.3.1 HTML和jQuery Mobile佈局
19.3.2 關注點分離
19.3.3 HTML片段描述
19.3.4 YouTube元素描述
19.3.5 JavaScript文件:gmap.js
19.3.6 基於可播放視頻的InfoWindow Marker
19.4 Map Marker數據庫表
19.5 數據庫類GMapData
19.5.1 處理標記
19.5.2 生成標記
19.5.3 插入和更新標記
19.6 準備安全的JSON數據
第20章 Twitter身份驗證和SSL cURL
20.1 基於PHP的Twitter
20.2 TweetFetcher類
20.3 通過TweetFetcher讀取tweet
20.3.1 獲取Twitter oAuth令牌
20.3.2 針對cURL設置SSL身份驗證
20.3.3 從時間軸上檢索最新的tweet
20.3.4 創建和過濾純文本中的超鏈接
20.4 過濾不良的tweet
20.5 使用TweetFetcher
第21章 安全的AJAX購物車
21.1 移動商店
21.1.1 向購物車中添加商品
21.1.2 從購物車中移除商品
21.2 利用PayPal購物
21.2.1 開始PayPal事務
21.2.2 安全地向PayPal付款
21.2.3 完成PayPal購買行為
21.3 小結
第22章 常見的Facebook漏洞點
22.1 通過PDO保存Facebook實時更新
22.2 反射JSON坐標
22.3 反射消息
22.4 反射URL
22.5 JavaScript和jQuery過濾器
22.6 JSONP預防措施
參考文獻
附錄
在線資源
理解編碼器背後的正則表達式
根據最新的安全警告檢查HTML頭
支持網站
推薦讀物


作者介紹


J.D. Glaser是一名具有開創性的研發人員,主要負責Windows安全軟件的開發,並多次在全球安全事務會議上發言。他曾為政府機構提供安全方面的培訓,美國司法部曾採用他的工具抓捕網絡罪犯。 J.D. Glaser目前專注於用PHP開發大型社交遊戲,並確保玩家在網絡空間的安全。




相關書籍

JavaScript & jQuery 交互式Web前端開發

作者 達克特 (Jon Duckett)

2021-09-01

從 Hooks 開始,讓你的網頁 React 起來(iT邦幫忙鐵人賽系列書)

作者 陳柏融

2021-09-01

Iot Development for Esp32 and Esp8266 with JavaScript: A Practical Guide to XS and the Moddable SDK

作者 Hoddie Peter Prader Lizzie

2021-09-01