XSS,CSRF,SQL注入

目錄

XSS

XSS:跨站腳本攻擊,Cross-Site Scripting,爲了和前端的css避免重名,簡稱爲XSS,是指通過技術手段,向正常用戶請求的HTML頁面中插入惡意腳本,執行。

這種攻擊主要是用於信息竊取和破壞等目的。比如2011年的微博XSS攻擊事件,攻擊者利用了微博發佈功能中未對action-data漏洞做有效的過濾,在發佈微博信息的時候帶上了包含攻擊腳本的URL,用戶訪問就會加載惡意腳本,導致大量用戶被攻擊。

如何防範XSS:

  • 主要就是通過對用戶輸入的數據做過濾或者是轉義,可以使用框架提供的工具類HtmlUtil
  • 前端在瀏覽器展示數據的時候,要使用安全的API展示數據。比如使用innerText而不是innerHTML

CSRF

CSRF跨站點請求僞造(Cross—Site Request Forgery),跟XSS攻擊一樣,存在巨大的危害性,你可以這樣來理解:
攻擊者盜用了你的身份,以你的名義發送惡意請求,對服務器來說這個請求是完全合法的,但是卻完成了攻擊者所期望的一個操作,比如以你的名義發送郵件、發消息,盜取你的賬號,添加系統管理員,甚至於購買商品、虛擬貨幣轉賬等。

CSRF攻擊攻擊原理及過程如下:

網站A爲存在CSRF漏洞的網站,網站B爲攻擊者構建的惡意網站,用戶C爲網站A的合法用戶。

  1. 用戶C打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;
  2. 在用戶信息通過驗證後,網站A產生Cookie信息並返回給瀏覽器,此時用戶登錄網站A成功,可以正常發送請求到網站A;
  3. 用戶未退出網站A之前,在同一瀏覽器中,打開另一個頁面訪問網站B;
  4. 網站B接收到用戶請求後,返回一些攻擊性代碼,併發出一個請求要求訪問第三方站點A;
  5. 瀏覽器在接收到這些攻擊性代碼後,根據網站B的請求,在用戶不知情的情況下攜帶Cookie信息,向網站A發出請求。網站A並不知道該請求其實是由B發起的,所以會根據用戶C的Cookie信息以C的權限處理該請求,導致來自網站B的惡意代碼被執行。

如何防範CSRF:
1 Token驗證,利用瀏覽器的同源限制,在HTTP接口執行前驗證Cookie中的Token,驗證通過纔會繼續執行請求。
2、人機交互,例如短信驗證碼、界面的滑塊。

推薦閱讀:
Cookie,Session ,Application是什麼?
實現登錄狀態保持的方法:cookie session token jwt

SQL注入

SQL注入是屬於注入式攻擊,這種攻擊是因爲在項目中沒有將代碼與數據(比如用戶敏感數據)隔離,在讀取數據的時候,錯誤的將數據作爲代碼的一部分執行而導致的。

典型的例子就是當對SQL語句進行字符串拼接的時候,直接使用未轉義的用戶輸入內容作爲變量。這時,只要在sql語句的中間做修改,比如加上dropdelete等關鍵字,執行之後後果不堪設想。

如何防範SQL注入:
1、過濾用戶輸入參數中的特殊字符,降低風險。
2、禁止通過字符串拼接sql語句,要嚴格使用參數綁定來傳入參數。
3、合理使用數據庫框架提供的機制。就比如Mybatis提供的傳入參數的方式 #{},禁止使用${},後者相當於是字符串拼接sql,要使用參數化的語句。
總結下,就是要正確使用參數化綁定sql變量。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章