Web Security 漏洞學(xué)習(xí)

XSS(跨站腳本攻擊 cross-site scripting)

XSS的攻擊方式就是想辦法“教唆”用戶的瀏覽器去執(zhí)行一些這個網(wǎng)頁中原本不存在的前端代碼。
攻:獲取當(dāng)前域名下Cookie信息
防:Cookie增加Http-Only屬性,只能用在網(wǎng)絡(luò)請求中

CSRF(跨站請求偽造 cross-site request forgery)

瀏覽器目前都有同源策略

所謂瀏覽器同源策略,即:不允許瀏覽器訪問跨域的Cookie,ajax請求跨域接口等。
也就是說,凡是訪問與自己不在相同域的數(shù)據(jù)或接口時,瀏覽器都是不允許的。
另外,除了DOM,Cookie,XMLHttpRequest(AJAX本質(zhì)上就是XMLHttpRequest)會受到同源策略的限制外,存儲在瀏覽器中的數(shù)據(jù),如LocalStorage和IndexedDB,以源進行分割。每個源都擁有自己單獨的存儲空間,一個源中的Javascript腳本不能對屬于其它源的數(shù)據(jù)進行讀寫操作。

最常見的例子:對于前后端完全分離的Web項目,前端頁面通過rest接口訪問數(shù)據(jù)時,會出現(xiàn)如下問題:

  • 不允許發(fā)送POST請求:在發(fā)送POST請求之前會發(fā)送OPTIONS請求,HTTP響應(yīng)狀態(tài)碼為403(Forbidden)。
  • 允許發(fā)送GET請求:HTTP響應(yīng)狀態(tài)碼為200,但是不能讀取服務(wù)器返回的數(shù)據(jù)。
那么如何做到CSRF呢?
  • <script>,<img>,<iframe>,<link>等標(biāo)簽都可以跨域加載資源,而不受同源策略的限制。
    這些帶src屬性的標(biāo)簽每次加載時,實際上是由瀏覽器發(fā)起了一次GET請求。

  • CORS(Cross-Origin Resource Sharing),Response Header中加入Access-Control-Allow-Origin

如何防護
  • 阻止不明外域的訪問,進行同源檢測,檢測Request Header中的Referer或者Origin
  • 利用CSRF攻擊只能使用Cookie而不能得到Cookie中內(nèi)容的特點,在請求的參數(shù)中添加token。例如把Token中的一部分放到請求中,后端只需要進行對比,減少性能消耗。缺點是每一個請求包括能繞開跨域限制的請求需要都攜帶這個Token,增加前端服務(wù)工作量。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容