CSRF攻擊是什麼?防範手段有哪些?

老男孩IT教育機構發表於2022-04-02

  此前,小編為大家介紹過SSRF攻擊、XSS攻擊以及SQL隱碼攻擊的原理及防範手段,本篇文章小編將為大家介紹一下CSRF攻擊-跨站請求偽造。那麼CSRF攻擊是什麼?防範手段有哪些?具體內容請看下文。

  CSRF攻擊是什麼?

  CSRF,全拼為Cross-site request forgery,也被稱為one-click attack或者session riding,中文名稱叫跨站請求偽造。一般來說,攻擊者透過偽造使用者的瀏覽器的請求,向訪問一個使用者自己曾經認證訪問過的網站傳送出去,使目標網站接收並誤認為是使用者的真實操作而去執行命令。常用於盜用賬號、轉賬、傳送虛假訊息等。

  攻擊者利用網站對請求的驗證漏洞而實現這樣的攻擊行為,網站能夠確認請求來源於使用者的瀏覽器,卻不能驗證請求是否源於使用者的真實意願下的操作行為。

  CSRF攻擊防範手段有哪些?

  第一、驗證HTTP Referer欄位

  HTTP頭中的Referer欄位記錄了該HTTP請求的來源地址。在通常情況下,訪問一個安全受限頁面的請求來自於同一個網站,而如果駭客要對其實施CSRF攻擊,他一般只能在他自己的網站構造請求。因此,可以透過驗證Referer值來防禦CSRF攻擊。

  第二、使用驗證碼

  關鍵操作頁面加上驗證碼,後臺收到請求後透過判斷驗證碼可以防禦CSRF。但這種方法對使用者不太友好。

  第三、在請求地址中新增token並驗證

  CSRF攻擊之所以成功,是因為駭客可以完全偽造使用者的請求,該請求中所有的使用者驗證資訊都是存在於cookie中,因此駭客可以在不知道這些驗證資訊的情況下直接利用使用者自己的cookie來透過安全驗證。要抵禦CSRF,關鍵在於在請求中放入駭客所不能偽造的資訊,並且該資訊不存在於cookie中。可以在HTTP請求中以引數的形式加入一個隨機產生的token,並在伺服器端建立一個攔截器來驗證這個token,如果請求中沒有token或者token內容不正確,則認為可能是CSRF攻擊而拒絕該請求。這種方法要比檢查Referer要安全,token可以在使用者登陸後產生並放於session中,然後在每次請求時把token從session中拿出,與請求中的token進行比對,但這種方法的難點在於如何把token以引數的形式加入請求。

  對於get請求,token將附在請求地址之後,這樣URL就變成:。

  對於post請求,要在form的最後加上<input type="hidden" name="csrftoken" value="tokenvalue"/>,這樣就把token以引數的形式加入請求了。

  第四、在HTTP頭中自定義屬性並驗證

  這種方法也是使用token並進行驗證,和上一種方法不同的是,這裡並不是把token以引數的形式置於HTTP請求中,而是把它放到HTTP頭中自定義的屬性裡。透過XMLHttpRequest這個類,可以一次性給所有該類請求加上csrftoken這個HTTP頭屬性,並把token值放入其中。這樣解決了上種方法在請求中加入token的不便;同時,透過XMLHttpRequest請求的地址不會被記錄到瀏覽器的位址列,也不用擔心token會透過Referer洩露到其他網站中去。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2885540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章