Web 安全開發指南 (Security for Web Developers: Using JavaScript, HTML, and CSS)
內容描述
本書分為5大部分,共17章,詳細介紹了Web安全開發的bi備知識,旨在讓前端開發人員、設計師、產品經理等前端開發相關人士瞭解新形勢下的安全技能,涉及從zui新的智能手機到老舊的台式電腦等各種設備,並且不限定平臺。具體內容包括:制訂安全計劃,運用成功的編碼實踐,創建有用及高效的測試策略,實現維護周期,查找安全資源。本書分為5大部分,共17章,詳細介紹了Web安全開發的bi備知識,旨在讓前端開發人員、設計師、產品經理等前端開發相關人士瞭解新形勢下的安全技能,涉及從zui新的智能手機到老舊的台式電腦等各種設備,並且不限定平臺。具體內容包括:制訂安全計劃,運用成功的編碼實踐,創建有用及高效的測試策略,實現維護周期,查找安全資源。
目錄大綱
第一部分制訂安全計劃
第1章定義應用環境2
1.1明確Web應用威脅3
1.2理解軟件安全保障6
1.2.1考慮OSSAP 7
1.2.2定義SSA的要求8
1.2.3對數據和資源分類9
1.2. 4進行必要的分析9
1.3探究與語言相關的問題12
1.3.1定義HTML的關鍵問題12
1.3.2定義CSS的關鍵問題13
1.3.3定義JavaScript的關鍵問題13
1.4考慮端點的防禦要素14
1.4. 1預防安全漏洞14
1.4.2檢測安全漏洞15
1.4.3修復受損的軟件16
1.5處理雲存儲16
1.6使用外部代碼和資源17
1.6.1定義庫的使用18
1.6.2定義API的使用19
1.6 .3定義微服務的使用20
1.6.4訪問外部數據21
1.7允許他人訪問22
第2章迎合用戶需求與期望24
2.1從用戶的視角看待應用程序24
2.2考慮自帶設備的問題25
2.2.1理解基於Web的應用程序的安全性26
2.2.2考慮原生應用的問題27
2.2.3使用定制化瀏覽器27
2.2.4驗證代碼兼容性問題29
2.2.5處理幾乎連續的設備更新31
2.3設計密碼的可選方案32
2.3.1使用口令33
2.3.2使用生物識別的方案33
2.3.3依靠鑰匙卡35
2.3.4依靠USBkey 36
2.3.5實現令牌策略36
2.4聚焦用戶期望37
2.4.1讓應用程序易於使用37
2.4.2讓應用程序快速運行37
2.4.3創建可靠的環境38
2.4.4客觀看待安全性38
第3章獲取第三方幫助39
3.1發現第三方安全解決方案39
3.2考慮雲安全方案41
3.2.1理解數據倉庫42
3.2 .2處理文件共享問題43
3.2.3考慮雲存儲46
3.3選擇產品類型47
3.3.1使用庫47
3.3.2訪問API 48
3.3.3考慮微服務49
第二部分運用成功的編碼實踐
第4章開發成功的界面52
4.1評估UI 53
4.1.1創建簡潔的界面53
4.1.2使界面靈活56
4.1.3提供輔助功能58
4.1.4定義可訪問性問題59
4.2提供受控制的選擇61
4.3選擇UI的解決方案級別65
4.3.1實現標準的HTML控件65
4.3.2使用CSS控件65
4.3.3用JavaScript創建控件67
4.4校驗輸入68
4.4.1只允許特定的輸入68
4.4.2查找鬼祟的輸入69
4.4.3請求新的輸入69
4.4.4使用客戶端和服務器端校驗70
4.5期待意外71
第5章構建可靠的代碼72
5.1區分可靠性和安全性73
5.1.1定義可靠性和安全性的角色73
5.1.2避免可靠代碼中的安全漏洞76
5.1.3聚焦應用程序的功能77
5.2開發團隊協議77
5.3創建經驗教訓的反饋迴路80
5.4考慮成套解決方案的問題81
5.4.1處理外部庫82
5.4.2處理外部API 83
5.4.3使用框架85
5.4.4調用微服務87
第6章包含庫88
6.1考慮庫的使用89
6.1.1用庫增強CSS 89
6.1.2用庫與HTML交互91
6.1.3用庫擴展JavaScript 93
6.2區分內部存儲庫和外部存儲庫95
6.3定義庫帶來的安全威脅95
6.3.1啟用嚴格模式97
6.3.2開發CSP 99
6.4安全地包含庫100
6.4.1充分研究庫101
6.4.2精確定義庫的使用101
6.4.3保持庫的小規模和內容聚焦101
6.4.4執行必需的測試102
6.5區分庫和框架103
第7章慎用API 105
7.1區分API和庫106
7.1.1考慮流行速度上的差異106
7.1.2區分用法上的差異107
7.2用API擴展JavaScript 108
7.2.1定位合適的API 108
7.2.2創建簡單示例109
7.3定義API帶來的安全威脅113
7.3.1 MailPoet毀了你的好聲譽113
7.3.2開發閱後即焚的圖片114
7.3.3使用“找回我的iPhone”卻丟了手機114
7.3.4 Heartbleed洩露你最重要的信息115
7.3 .5遭受Shellshock攻擊115
7.4通過JavaScript安全訪問API 116
7.4.1驗證API的安全性116
7.4.2測試輸入和輸出117
7.4.3保持數據的局部性和安全性117
7.4.4防禦性編碼117
第8章考慮使用微服務118
8.1定義微服務119
8.1.1詳述微服務的特點119
8.1.2區分微服務與庫120
8.1.3區分微服務與API 120
8.1.4考慮微服務的策略120
8.2用JavaScript調用微服務121
8.2.1理解通信中REST的角色122
8.2.2用JSON傳輸數據123
8.2.3用Node.js和Seneca創建微服務124
8.3定義微服務帶來的安全威脅126
8.3.1缺少一致性126
8.3.2考慮虛擬機的角色126
8.3.3使用JSON進行數據傳輸127
8.3.4定義傳輸層的安全128
8.4創建可替換的微服務路徑129
第三部分創建有用及高效的測試策略
第9章像黑客一樣思考132
9.1定義Web安全掃描的需求132
9.2構建測試系統136
9.2 .1考慮測試系統的使用136
9.2.2接受必需的訓練136
9.2.3創建正確的環境137
9.2.4使用虛擬機137
9.2.5獲取工具138
9.2.6配置系統138
9.2.7恢復系統139
9.3定義最常見的漏洞源139
9.3.1避免SQL注入攻擊140
9.3.2理解跨站腳本攻擊141
9.3.3解決拒絕服務攻擊問題142
9.3.4去除可預測的資源定位142
9.3.5克服無意的信息洩露143
9.4在BYOD環境中進行測試143
9.4.1配置遠程訪問區域144
9.4.2檢查跨應用程序的攻擊144
9.4.3處理真正古老的設備和軟件145
9.5依靠用戶測試145
9.5.1讓用戶橫衝直撞146
9.5.2開發可重現的步驟147
9.5.3讓用戶發聲147
9.6使用外部的安全測試人員148
9.6.1考慮滲透測試公司148
9.6.2管理項目149
9.6.3覆蓋要點149
9.6.4獲取報告149
第10章創建API安全區域151
10.1理解API安全區域的概念152
10.2定義API安全區域的需求153
10.2.1確保API可以工作153
10.2.2實現快速開發153
10.2.3證明最佳的集成154
10.2.4在負載情況下驗證API的表現158
10.2.5使API遠離黑客159
10.3用API沙盒進行開發159
10.3.1使用現成的解決方案161
10.3.2使用其他供應商的沙盒162
10.4考慮虛擬環境164
10.4.1定義虛擬環境164
10.4.2區分虛擬環境和沙盒164
10.4.3實現虛擬化165
10.4.4依靠應用程序虛擬化165
第11章檢查庫和API的漏洞167
11.1創建測試計劃168
11.1.1考慮目的和目標168
11.1.2測試內部庫175
11.1.3測試內部API 175
11.1.4測試外部庫175
11.1.5測試外部API 176
11.1.6擴展測試到微服務176
11.2單獨測試庫和API 177
11.2.1為庫創建測試框架177
11.2.2為API創建測試腳本178
11.2.3將測試策略擴展到微服務178
11.2.4開發響應策略178
11.3執行集成測試179
11.4測試與語言相關的問題180
11.4.1設計針對HTML問題的測試180
11.4.2設計針對CSS問題的測試181
11.4.3設計針對JavaScript問題的測試181
第12章使用第三方測試184
12.1找到第三方測試服務185
12.1.1定義聘請第三方的理由185
12.1.2考慮測試服務的範圍186
12.1.3確保第三方是合法的188
12.1.4面試第三方188
12.1.5對測試的搭建進行測試188
12.2創建測試計劃189
12.2.1指明第三方在測試中的目的189
12.2.2創建書面的測試計劃189
12.2.3枚舉測試輸出和報告的要求190
12.2.4考慮測試需求190
12.3實施測試計劃190
12.3.1確定公司參與測試的程度191
12.3.2開始測試過程191
12.3.3執行必需的測試監控191
12.3.4處理意外的測試問題192
12.4使用結果報告192
12.4.1與第三方討論報告輸出192
12.4.2向公司展示報告193
12.4.3根據測試建議採取行動193
第四部分實現維護週期
第13章明確定義升級週期196
13.1制訂詳細的升級週期計劃196
13.1.1尋找升級198
13.1.2確定升級的要求198
13.1.3定義升級的臨界點200
13.1.4檢查升級的問題201
13.1.5創建測試場景202
13.1.6實施變更203
13.2制訂升級測試計劃203
13.2.1執行所需的預測試204
13.2.2執行所需的集成測試204
13.3將升級移到生產環境205
第14章考慮更新選項207
14.1區分升級和更新208
14.2確定何時更新209
14.2.1處理庫的更新209
14.2 .2處理API和微服務的更新210
14.2.3接受自動更新211
14.3更新語言套件212
14.3.1創建語言支持清單212
14.3.2獲得可靠的語言專家213
14.3.3驗證與語言相關的提示符能否在應用程序中起效214
14.3.4確保數據以正確的格式呈現214
14.3.5定義語言支持測試的特殊要求214
14.4執行緊急更新215
14.4.1盡可能避免緊急情況215
14.4.2組建快速響應團隊215
14.4.3執行簡化的測試216
14.4.4制訂持久的更新計劃216
14.5制訂更新測試計劃216
第15章考慮報告的需要218
15.1使用報告以做出改變219
15.1.1避免無用的報告219
15.1.2安排時間為升級和更新做出報告220
15.1.3使用自動生成的報告221
15.1.4使用定制的報告221
15.1.5創建一致的報告222
15.1.6使用報告執行特定的應用任務223
15.2創建內部報告223
15.2.1確定使用哪些數據源223
15.2.2指定報告的使用224
15.3依靠外部生成的報告225
15.3.1從第三方獲取完整的報告225
15.3.2從原始數據創建報告225
15.3.3保持內部數據安全225
15.4提供用戶反饋226
15.4.1獲取用戶反饋226
15.4.2確定用戶反饋的可用性227
第五部分查找安全資源
第16章跟踪當前的安全威脅230
16.1發現安全威脅信息的來源231
16.1.1閱讀與安全相關的專業文章231
16.1.2查看安全網站232
16.1.3獲取顧問的意見234
16.2避免信息氾濫235
16.3為基於威脅的升級制訂計劃236
16.3.1預判不需要採取任何行動的情況236
16.3.2決定升級還是更新236
16.3.3定義升級計劃238
16.4為基於威脅的更新制訂計劃238
16.4.1驗證更新是否可解決威脅239
16.4.2確定威脅是否緊急240
16.4.3定義更新計劃240
16.4.4要求來自第三方的更新240
第17章獲取必需的培訓241
17.1制訂內部的安全培訓計劃242
17.1.1定義所需的培訓242
17.1.2設置合理的目標243
17.1.3使用內部培訓師243
17.1.4監控結果244
17.2獲取第三方對開發人員的培訓245
17.2.1指定培訓的要求246
17.2.2為公司聘請第三方培訓師247
17.2. 3使用在線學校247
17.2.4依靠培訓中心248
17.2.5利用本地的學院和大學248
17.3確保用戶有安全意識249
17.3.1制定專門的安全培訓249
17.3.2結合書面指南進行培訓249
17.3.3創建並使用替代的安全提醒250
17.3.4進行培訓有效性檢查250
關於作者251
關於封面251
版權聲明252
作者介紹
[美]約翰·保羅·米勒(John Paul Mueller)譯者:溫正東
John Paul Mueller,技術編輯、自由作家,寫過99本書和600多篇文章,主題涵蓋數據庫管理、編程、網絡技術、人工智能。為Data Based Advisor和Coast Compute兩本雜誌提供技術編輯服務,幫助60多位作者完善了手稿。個人網站:www.johnmuellerbooks.com。