淺談CSRF

講者: 土豆

日期: 2020/03/15

大綱

  • 什麼是CSRF
  • CSRF原理
  • 實際攻擊Demo
  • 如何防範CSRF

什麼是CSRF

CSRF

Cross-site request forgery

跨站請求偽造

想像一下

這是你的部落格網站

這是你最愛去的星座占卜網站

金牛座的你,想要知道今天的運勢

於是按下了這頭可愛的牛

但,什麼也沒發生

你覺得奇怪,但也許是今日不宜占卜

於是回到你可愛的部落格

卻發現...

嗯?? 第一篇文章呢???

是的,沒錯,你中了CSRF

CSRF原理

後端透過不同路徑處理請求

新增: /add

刪除id 10 : /delete/10

編輯id 10: /edit/10

前端根據使用者的操作,送出請求到相應路徑

送出請求至/delete/1

伺服器收到請求,刪除文章1

所以,只要攻擊者知道哪個路徑對應到哪個功能

就可以為所欲為

把牛牛的按鈕,設計成按下去之後送出請求至/delete/1

做一個假的星座網站

當你開心地按下牛牛,孰不知憾事已發生

嗯? 你說,你有做登入系統?

登入後session會紀錄下你登入狀態

雖然不在同個網站,但是當你送出request時仍然會自動帶入session

所以只要session沒過期,都有可能被CSRF

例如你在google搜尋博客來後,連到網頁時你是登入狀態

嗯? 你說,都9012年了還有網站不防這種攻擊??

有:D

讓我來打給你看XD

目標

將簽到密碼改成87878787

開始上課前

「學姐! 可以給這顆西瓜一個讚嗎!」

「當然!」

目標達成

如何防範CSRF

使用CSRF TOKEN

後端產生的一串亂數

只有在這個頁面才能拿到

後端驗證token正不正確

Django與Flask皆有預設

Express可使用csurf套件

參考資料

謝謝大家

Made with Slides.com