iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0

今天終於結束了 9 天的關西之旅 🇯🇵,玩得超累 XD。接下來繼續努力!

前言

在第 7 天介紹 XSS 時有提到它和 CSRF 的組合技,今天來學習一下什麼是 CSRF。

CSRF (Cross-Site Request Forgery)

大致上是指攻擊者引誘使用者點擊惡意網站的連結或按鈕,就可以利用使用者已登入某網站的狀態,對某網站做壞壞的事。

以步驟來看的話

  1. 目標站點:使用者已登入的站點
  2. 攻擊者:準備一個惡意的網站,其中包含惡意的按鈕或連結可以對目標站點做一些惡意操作
  3. 使用者:使用了攻擊者準備的網站,並且點擊了上述的按鈕或連結

舉個例子🌰

使用者在 A 銀行有 100 萬存款,而且電腦上已經登入了 A 銀行的網銀。

A 銀行的轉帳功能資訊如下

  • 連結:bank.a.com/transfer
  • 使用 POST
  • 參數
    • transfer_to: 轉給誰
    • amount: 轉多少

於是攻擊者設計了一個網站如下

<body>
    <h1>參加銀行抽獎活動</h1>
    <form action="https://bank.a.com/transfer" method="post">
        <input type="hidden" name="transfer_to" value="attacker-account">
        <input type="hidden" name="amount" value="1000000">
        <input type="submit" value="點擊參加抽獎活動">
    </form>
</body>

使用者按下抽獎按鈕的時候,也送出了一個看不見的表單到銀行的轉帳功能的 endpoint,100 萬就這樣被轉給攻擊者了💸

怕啦,怎麼阻止這種攻擊

別擔心,當今流行的 Web 開發框架應該都內建了 CSRF 的保護機制,有一種是 server 會發一個 CSRF token 給使用者,送出表單的時候都需要帶這把 token,後端收到表單的時候會檢查是否符合。

CSRF token 還可以細分成有狀態(存在 server session)與無狀態(Double Submit Cookie),但因為時間問題今天先不討論 XD,後續如果有剩餘的篇幅我再一點詳細介紹。

OWASP 介紹 CSRF 的頁面也有列出一些常見的無效防禦方式,推薦大家去看看。

Ref

Cross-Site Request Forgery Prevention Cheat Sheet


上一篇
Day 9. Web Security - XSS 實戰(下)
下一篇
Day 11. Web Security - DVWA 靶機架設
系列文
進了資安公司當後端 RD 才入門資安會不會太晚了30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言