iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
Software Development

從餐飲業轉職成小白工程師的所見所學系列 第 11

網頁安全基礎,XSS? CSRF? 如何防範? Day11

  • 分享至 

  • xImage
  •  

XSS ( Cross-Site Scripting ) 與 CSRF ( Cross-Site Request Forgery ) 都是網站應用程式中的安全漏洞,它們可能會對使用者和應用程式的安全性造成威脅。

  1. XSS ( Cross-Site Scripting )
  • 攻擊者通過輸入惡意的客戶端腳本代碼到目標網站的輸出中,當其他用戶訪問到該網站時,這些腳本便會執行。
  • 攻擊者可以獲取使用者的敏感訊息,修改網站的內容,或執行其他不當操作,可能對用戶遭成嚴重損害。

舉個例子來說,有個網站有留言區,並且留言區會顯示在畫面上,惡意攻擊者留下了一段程式碼

<script>
  alert();
</script>

若沒有進行過濾的話,便會執行 script 裡面的內容了!

防範的方法:

  • 使用輸出編碼: 將要輸出到網頁的數據進行編碼,以防止腳本的注入。常見的方法有: HTML Entity Encoding、JavaScript Encoding
  • 設置 Content Security Policy ( CSP ): CSP 是一種 HTTP 標頭,可以限制網頁上載入的資源和執行的腳本。
  • 輸入驗證、過濾: 對於接收到用戶的輸入,進行驗證及過濾,只允許合法的內容通過。

這邊有個有趣的 XSS 練習網站 https://xss-game.appspot.com/
各位可以玩看看!

  1. CSRF ( Cross-Site Request Forgery ):
  • 攻擊者通過誘導的方式,讓使用者在登入狀態下執行未經授權的操作,通常都是在受害者不知情的情況下,向網站發送偽造的請求。
  • 這種攻擊會導致用戶執行不當操作,如: 更改密碼、執行金融交易等等。

舉個例子來說,假設一個用戶已經登入了他的銀行網站,並且未登出,攻擊者創建了一個偽造的網頁,其中包含以下代碼:

<form action="https://銀行網站.com/change-password" method="POST">
  <input type="hidden" name="new-password" value="惡意密碼">
  <input type="submit" value="點擊此處免費領取獎品">
</form>
<script>
  document.forms[0].submit(); // 自動提交表單
</script>

當使用者按下按鈕之後,密碼就會被更改了。

防範的方法:

  • 使用 CSRF Token: 將隨機生成的 CSRF token 包含在每一個重要的網站請求中,並在伺服器驗證該 token。
  • 驗證 HTTP Referer Header: 檢查 HTTP Referer 的首部,確定請求來自預期的網站。
  • 使用 SameSite Cookie 屬性: 將 SameSite 屬性設置為 Strict or Lax,限制第三方網站對 Cookie 的存取。

以上是 XSS、CSRF的介紹! 那我們明天見。


上一篇
物件導向程式設計是什麼? 為什麼很重要?
下一篇
API是什麼? Day12
系列文
從餐飲業轉職成小白工程師的所見所學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言