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