本書深入探討了構(gòu)建保護數(shù)據(jù)和身份安全的接口所要掌握的概念、技術(shù)和編程方法論,而且兼顧可用性。你將學(xué)到如何彌補現(xiàn)有系統(tǒng)的漏洞、防御各種各樣的攻擊媒介,以及如何在天生不安全的環(huán)境中保障自身周全。? 了解Web和應(yīng)用安全的現(xiàn)狀。? 構(gòu)建安全的密碼加密方式,以及與各種密碼攻擊媒介斗爭。? 創(chuàng)建數(shù)字指紋,在瀏覽器、設(shè)備和配對設(shè)備中識別用戶。? 通過OAuth和OpenID Connect構(gòu)建安全的數(shù)據(jù)傳輸系統(tǒng)。? 使用其他的識別方法提供第二種身份驗證方式。? 加固Web應(yīng)用,防止攻擊。? 使用SSL/TLS及同步和異步加密創(chuàng)建安全的數(shù)據(jù)傳輸系統(tǒng)。
作為Web和應(yīng)用開發(fā)者、設(shè)計師、工程師和創(chuàng)作者,我們責(zé)無旁貸,自己必須掌握身份和數(shù)據(jù)安全方面的知識。如果Web開發(fā)者不知道如何在傳輸過程中正確隱蔽數(shù)據(jù),不經(jīng)意間就會敞開網(wǎng)站的安全大門。通過這本實用的手冊,你將學(xué)到為何以及如何保護用戶和數(shù)據(jù)的安全。這是一本適合初學(xué)者和有經(jīng)驗的開發(fā)者閱讀的書。本書先通講基本概念,隨后便說明具體做法和內(nèi)部機制,而且配備了大量有用且詳細的示例代碼片段。任何一名Web開發(fā)者都應(yīng)該閱讀本書。Lenny MarkusPayPal工程團隊高級經(jīng)理
Jonathan LeBlanc獲得過艾美獎,是一位軟件工程師、技術(shù)作者和PayPal Global Developer Advocacy的主管。Jonathan主攻身份識別、授權(quán)和安全,硬件Web通信,以及數(shù)據(jù)挖掘技術(shù),而且關(guān)注的都是人機互聯(lián)。Tim Messerschmidt是Google Developer Relations的項目經(jīng)理,主管德國、奧地利和瑞士(DACH)地區(qū)的業(yè)務(wù)。加入Google之前,他領(lǐng)導(dǎo)著PayPal和Braintree Developer Evangelism團隊的歐洲、中東、非洲(EMEA)和亞太(APAC)區(qū)。
目錄
前言1
第1章導(dǎo)論7
現(xiàn)有安全模型的問題7
弱密碼8
為了安全犧牲可用性9
不當(dāng)?shù)臄?shù)據(jù)加密10
最薄弱的環(huán)節(jié):人類11
單點登錄12
理解密碼安全中的熵13
隨機選擇的密碼熵14
人為選定的密碼熵15
區(qū)分用戶名和密碼在系統(tǒng)中的作用17
保護身份的當(dāng)前標準18
好的和不好的安全算法18
應(yīng)該保護哪些數(shù)據(jù)?20
賬戶恢復(fù)機制和社會工程20
安全問題帶來的問題20
下一步21
第2章密碼加密、哈希和加鹽22
靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)22
靜態(tài)數(shù)據(jù)22
動態(tài)數(shù)據(jù)24
密碼攻擊媒介24
暴力攻擊26
使用reCAPTCHA添加驗證碼27
字典攻擊33
反向查詢表34
彩虹表35
加鹽37
生成隨機鹽值38
重用鹽值39
鹽值的長度39
把鹽值存儲在哪里39
撒胡椒40
選擇正確的密碼哈希函數(shù)41
bcrypt41
PBKDF243
scrypt44
對比哈希值,驗證密碼46
密鑰延伸47
重新計算哈希值48
下一步48
第3章身份安全基礎(chǔ)知識49
理解不同的身份類型49
社會身份50
實際身份50
弱身份51
利用身份提升用戶體驗51
信任區(qū)簡介52
瀏覽器指紋識別53
阻礙瀏覽器指紋識別的配置54
可識別的瀏覽器信息55
獲取瀏覽器細節(jié)56
位置追蹤58
設(shè)備指紋識別(手機/平板)61
設(shè)備指紋識別(藍牙配對設(shè)備)62
實現(xiàn)身份63
第4章通過OAuth2和OpenIDConnect實現(xiàn)安全的
登錄64
身份驗證和授權(quán)之間的區(qū)別64
身份驗證64
授權(quán)65
OAuth和OpenIDConnect是什么65
OAuth20簡介68
使用OAuth20處理授權(quán)70
OAuth20權(quán)限核發(fā)類型72
使用BearerToken73
使用OpenIDConnect授權(quán)和驗證身份73
OAuth2和OAuth10a之間的安全注意事項75
構(gòu)建一個OAuth20服務(wù)器75
創(chuàng)建Express應(yīng)用76
設(shè)置服務(wù)器的數(shù)據(jù)庫76
生成授權(quán)碼和令牌77
ES5中Mathrandom()函數(shù)的官方文檔79
授權(quán)端點80
處理令牌的存活期83
處理資源請求87
使用刷新令牌89
處理錯誤90
為服務(wù)器添加OpenIDConnect功能94
ID令牌模式95
修改授權(quán)端點96
調(diào)整令牌端點97
userinfo端點99
使用OpenIDConnect管理會話99
構(gòu)建OAuth2客戶端100
使用授權(quán)碼100
使用資源屬主憑據(jù)或客戶端憑據(jù)授權(quán)103
為客戶端添加OpenIDConnect功能105
OpenIDConnect基本流程105
OAuth20和OpenIDConnect之外107
第5章身份認證的其他方法108
設(shè)備和瀏覽器指紋識別108
雙因素身份驗證和n因素身份驗證109
n因素身份驗證109
一次性密碼110
使用Authy實現(xiàn)雙因素身份驗證113
使用生物特征代替密碼120
如何評價生物特征的效果121
面部識別121
視網(wǎng)膜和虹膜掃描122
靜脈識別123
新出現(xiàn)的標準123
FIDOAlliance123
Oz126
區(qū)塊鏈126
小結(jié)127
第6章增強Web應(yīng)用的安全128
保護會話128
會話的種類129
Express處理會話的方式130
使用SHA-2保護密碼131
處理XSS134
XSS攻擊的三種類型134
測試XSS保護機制135
小結(jié)140
CSRF攻擊140
使用csurf處理CSRF140
有用的Node資源141
Lusca142
Helmet142
Node安全項目143
其他減輕危害的技術(shù)144
小結(jié)145
第7章數(shù)據(jù)傳輸安全147
SSL/TLS147
證書驗證類型和權(quán)威機構(gòu)149
創(chuàng)建供測試的自簽名證書151
異步加密159
用例159
具體示例161
異步加密的優(yōu)缺點和用途167
同步加密168
初始向量169
填充170
分組加密的操作模式172
使用CTR加密模式的AES174
使用GCM驗證加密模式的AES177
同步加密的優(yōu)缺點和用途179
附錄AGitHub倉庫181
附錄B技術(shù)前提條件和要求183
詞匯表191