iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
1
Security

資安0~100K只要30天系列 第 19

Day 19 - XSS (一)

  • 分享至 

  • xImage
  •  

What is XSS ?

  • 全名 : Cross Side Script
  • 中文 : 跨網站指令碼

因為怕跟 CSS (階層樣式表) 撞名
所以才把開頭改成了 X

該攻擊通常為網頁開發時存在可將特定輸入直接放在網頁上
導致可輸入一些 HTML and Javascript 語法且被網頁解析
造成使用者瀏覽網頁時觸發這些惡意語法使得攻擊者可竊取 Cookie 等重要資訊
或執行一些更高權限的操作

在介紹 XSS 前
我們先來認識一些東西

Cookie & Session

兩者都是用來驗證使用者身分的機制

Cookie Session
儲存位置 本地 伺服器
安全性

也因為 cookie 存在本地端
如果只使用這個拿來驗證使用者身分
將很容易偽造另一個使用者的身分

CSRF

  • 全名 : Cross-Site Request Forgery
  • 中文 : 跨站請求偽造

也被稱為 one-click attack 因為你真的只要點一下就中招了XD
意思是攻擊者利用惡意網頁的對參數保護的不當
造成可以利用 URL 執行一些特殊權限操作
導致今天受害者點擊此連結就會利用他的身分去執行這項操作
也因為這種特性也可能被 XSS 利用網址轉址來達成這項攻擊

XSS 漏洞型態

Reflected (反射型)

  • 網頁直接將使用者的輸入放置在網頁上而未做任何的過濾時產生
  • 無法主動造成傷害,通常需要誘導被害人點擊特定連結

Stored (儲存型)

  • 網頁一樣對使用者輸入沒有做任何過濾就放到前端
  • 惡意輸入會被存在伺服器上,造成任何人只要進入該網頁都會觸發(與反射型不同,這不需要釣魚)

DOM-Based

  • 針對 HTML 中 DOM (Document Object Model) 的攻擊方式
  • 前端未將使用者輸入的字串過濾,就透過建立 DOM 元素相關的語法(例如 innerHTML()) 將字串呈現於網頁上
  • 與反射型不同,該攻擊不會經過後端

防禦

從上面看到
這三種不同的攻擊方式都有一個共通點
就是 "未對使用者輸入進行過濾就直接秀出來"
沒錯,XSS 的成因最主要就是這個
所以請大家記得再懶惰也至少把任何輸入中的角括號<> 編碼掉或是直接濾掉喔 ~


上一篇
Day 18 - SQLi (三)
下一篇
Day 20 - XSS (二)
系列文
資安0~100K只要30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言