iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
1
Security

Web Security 魔法使攻略系列 第 12

Web Security 魔法使攻略─XSS

  • 分享至 

  • xImage
  •  

XSS

  • 跨網站腳本,英文叫做 Crossing Site Scripting
    「明明簡稱是 CSS為什麼變成 XSS」
    因為撞名所以變成 XSS

「什麼情況才會有 XSS 產生呢?」
你可以很簡單的說當自己的網站上出現不是自己寫的 js 語法,
可能是留言板或是任何可以給使用者輸入「字串」的地方,
都有可能產生 XSS。

「XSS 聽說分成三種,可以說一下這三種有什麼差別嗎?」
反射、儲存跟 DOM,前兩種比較常見,

儲存型XSS

儲存型的比較好理解,基本上就是這個惡意的 xss 語法會留在伺服器當中,
最常見的就是留言板或是論壇可以留言的地方,
十年前的網站大部分都有這個問題,
基本上惡意的人只要將 <script>alert('xss')</script> 輸入進去留言板,
每一個人瀏覽這個網頁的時候就可能會彈出一個視窗上面寫 xss ,
這是因為網站把這個語法當作 js 直接執行,
順帶一提,現在的 google chrome 瀏覽器 會去預防 xss 的攻擊,
雖然還是有方法可以繞過。

反射型XSS

既然儲存型會儲存在伺服器當中,那反射型就是不會被儲存的,
比如說很多可以搜尋的功能,他會把被搜尋的字串一起印在網頁當中,
那假設今天搜尋的字串可能是<script>alert('xss')</script>
如果這個網站將這個字串一起印在網頁當中並且執行了這段 js 語法,
那他可能就是有 xss 的弱點。

DOM型XSS

文件物件模型(Document Object Model, DOM)是 HTML、XML 和 SVG 文件的程式介面。
你可以想成這個技術讓我們可以透過 js 產生網頁內容不用透過伺服器。
DOM型XSS 就是我們請 js 產生網頁內容的時候被注入惡意字串。

這是一個來自 acunetix 的範例

<html>
<head>
<title>我是範例</title>
</head>
Hello , 
<script>
	var pos=document.URL.indexOf("context=")+8;
	document.write(document.URL.substring(pos,document.URL.length));
</script>

</html>

https://feifei.com.tw/example.html?context=Fei
他會印出 Hello, Fei
那當我們輸入一下惡意字串,這時候如果網頁直接執行那就是有 DOM 的 XSS
https://feifei.com.tw/example.html#context=<script>alert('xss')</script>

推薦閱讀


上一篇
Web Security 魔法使攻略─前端的安全就由你來守護
下一篇
Web Security 魔法使攻略─快速寫 Request 的方法
系列文
Web Security 魔法使攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言