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