W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Angular 內(nèi)置了一些支持來(lái)防范兩個(gè)常見的 HTTP 漏洞:跨站請(qǐng)求偽造(XSRF)和跨站腳本包含(XSSI)。 這兩個(gè)漏洞主要在服務(wù)器端防范,但是 Angular 也自帶了一些輔助特性,可以讓客戶端的集成變得更容易。
在跨站請(qǐng)求偽造(XSRF 或 CSFR)中,攻擊者欺騙用戶,讓他們?cè)L問一個(gè)假冒頁(yè)面(例如 "evil.com"), 該頁(yè)面帶有惡意代碼,秘密的向你的應(yīng)用程序服務(wù)器發(fā)送惡意請(qǐng)求(例如 "example-bank.com")。
假設(shè)用戶已經(jīng)在 "example-bank.com" 登錄。用戶打開一個(gè)郵件,點(diǎn)擊里面的鏈接,在新頁(yè)面中打開 "evil.com"。
該 "evil.com" 頁(yè)面立刻發(fā)送惡意請(qǐng)求到 "example-bank.com"。這個(gè)請(qǐng)求可能是從用戶賬戶轉(zhuǎn)賬到攻擊者的賬戶。 與該請(qǐng)求一起,瀏覽器自動(dòng)發(fā)出 "example-bank.com" 的 cookie
。
如果 "example-bank.com" 服務(wù)器缺乏 XSRF 保護(hù),就無(wú)法辨識(shí)請(qǐng)求是從應(yīng)用程序發(fā)來(lái)的合法請(qǐng)求還是從 "evil.com" 來(lái)的假請(qǐng)求。
為了防止這種情況,你必須確保每個(gè)用戶的請(qǐng)求都是從你自己的應(yīng)用中發(fā)出的,而不是從另一個(gè)網(wǎng)站發(fā)出的。 客戶端和服務(wù)器必須合作來(lái)抵擋這種攻擊。
常見的反 XSRF 技術(shù)是服務(wù)器隨機(jī)生成一個(gè)用戶認(rèn)證令牌到 cookie
中。 客戶端代碼獲取這個(gè) cookie,并用它為接下來(lái)所有的請(qǐng)求添加自定義請(qǐng)求頁(yè)頭。 服務(wù)器比較收到的 cookie
值與請(qǐng)求頁(yè)頭的值,如果它們不匹配,便拒絕請(qǐng)求。
這個(gè)技術(shù)之所以有效,是因?yàn)樗袨g覽器都實(shí)現(xiàn)了同源策略。只有設(shè)置 cookie
的網(wǎng)站的代碼可以訪問該站的 cookie
,并為該站的請(qǐng)求設(shè)置自定義頁(yè)頭。 這就是說,只有你的應(yīng)用程序可以獲取這個(gè) cookie
令牌和設(shè)置自定義頁(yè)頭。"evil.com" 的惡意代碼不能。
Angular 的 HttpClient
對(duì)這項(xiàng)技術(shù)的客戶端部分提供了內(nèi)置的支持要了解更多信息,參見 HttpClient 部分。
可到 "開放式 Web 應(yīng)用程序安全項(xiàng)目 (OWASP) " 深入了解 CSRF,參見 Cross-Site Request Forgery (CSRF) 和 Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet。
跨站腳本包含,也被稱為 Json 漏洞,它可以允許一個(gè)攻擊者的網(wǎng)站從 JSON API 讀取數(shù)據(jù)。這種攻擊發(fā)生在老的瀏覽器上, 它重寫原生 JavaScript 對(duì)象的構(gòu)造函數(shù),然后使用 <script>
標(biāo)簽包含一個(gè) API 的 URL。
只有在返回的 JSON 能像 JavaScript 一樣可以被執(zhí)行時(shí),這種攻擊才會(huì)生效。所以服務(wù)端會(huì)約定給所有 JSON 響應(yīng)體加上前綴 )]}
,\n
,來(lái)把它們標(biāo)記為不可執(zhí)行的, 以防范這種攻擊。
Angular 的 HttpClient 庫(kù)會(huì)識(shí)別這種約定,并在進(jìn)一步解析之前,自動(dòng)把字符串 )]}
,\n
從所有響應(yīng)中去掉。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: