CSRF 攻擊是什麼? 簡述

Roy Kwok
Mar 6, 2018

--

前言:

CSRF (Cross Site Request Forgery),中文稱:跨站請求攻擊。攻擊者通過建構網站後台某個功能接口的請求地址,設法讓用户點擊連結或者腳本的方式讓請求地址自動加載。

攻擊者怎樣攻擊?

用户登錄原網站,瀏覽器會記錄Cookies ,如果用户未登出或Cookies並未過期(用户關閉瀏覽器不代表網站已登出或Cookies會立即過期)。在這期間,如果用户造訪其他危險網站,點擊了攻擊者的連結,便會向原網站發出某個功能請求,原網站的伺服器接收後會被誤會以為是用户合法操作。

為何會有漏洞?

一般是網站採用 GET 形式去發出請求,讓攻擊者輕易知道網站向後台的請求方式。令攻擊者按照其方式,建構網站後台某個功能接口的請求地址。在你點擊擊攻擊者的連結前,由於你已登錄過原網站。而攻擊者的連結會向原網站發出請求,你的瀏覽器會帶上你原網站的 Cookie 發出 GET 形式的請求去執行請求,原網站的伺服器接收後會被誤會以為是用户合法操作。

即使改用 POST 形式的接口也不是絕對安全,因為攻擊者可以利用腳本去獲得 POST 形式提交的參數頁面。

如何預防?

在於用户,應該:

  • 登錄網站後,使用完畢後緊記登出。
  • 登錄網站期間,避免瀏覽其他網站或圖片,表單及文字等連結點擊。
  • 避免瀏覽其他不明來歷網站或點擊不明來歷圖片,表單及文字等連結。
  • 避免在瀏覽器儲存帳户名稱或密碼

在於開發人員,應該:

  • 從伺服器進行預防
  • 在頁面表單中加上CSRF token 在頁面表單中加上一個 <input type="hidden">,並設定名 name =csrftokenvalue="" 填的值由 server 隨機產生,並存在 server 的 session 中。
<input type="hidden" name="csrftoken" value="tergf1dgkjeirg"/>

按提交之後,伺服器會核對表單中的csrftoken與自己 session 裏面存的是否一致,若是則代表由使用者本人發出的請求。

  • 還有其他的預防方式可參考:

讓我們來談談 CSRF

浅谈CSRF攻击方式

總結:

本文是小弟學習前端寫有關於簡述:CSRF 攻擊是什麼?,請大家多多指教。如有任何意見及交流,可在下方留言,謝謝!

--

--

No responses yet