HTML5去掉了很多過時的標籤,例如<center>和<frameset>,同時又引入了許多有趣的新標籤,例如<video>和<audio>標籤可以允許動態的加載音頻和視頻。
HTML5引入的新標籤包括<Audio>、<Video>、<Canvas>、<Article>、<Footer>等等,而這些標籤又有一些有趣的屬性,例如poster、autofocus、onerror、formaction、oninput,這些屬性都可以用來執行javascript。這會導致XSS和CSRF跨域請求僞造。
下面我們要講到就是這些關鍵載體。它允許創建XSS的變種並且可以繞過現有的XSS過濾器。
首先來看一個標籤:
<video><sourceοnerrοr="javascript:alert(1)“>
它使用了一個source標籤,而沒有指定具體的src,所以後面的onerror方法會立即得到執行。
下面是video的poster屬性,它鏈接到一個圖像,是指當視頻未響應或緩衝不足時,顯示的佔位符。
<videoposter=”javascript:alert(1)”>
另外還有HTML5新引入的autofocus和formaction屬性,autofocus會讓元素自動的獲取焦點,而formaction屬性能覆蓋 form 元素的action 屬性。
<inputautofocus οnfοcus=“alert(1)”>
<form><buttonformaction="javascript:alert(1)">
在這個項目裏存在用戶輸入的地方,我們雖然已經針對舊有的標籤以及屬性進行了過濾和清洗,但是還會存在新標籤攻擊的漏洞,攻擊者利用上面的示例方式就可以對系統進行XSS注入攻擊。例如攻擊者輸入http://www.yujie.com/1.php?text=<videoposter=”javascript:alert(1)”>時就能立即運行攻擊腳本。
我們對此攻擊的防禦方式是,對前端或者後端的過濾器進行優化,添加過濾規則或者黑名單。
相關文章:
本文爲原創文章,轉載請註明:來自蔣宇捷的博客:http://blog.csdn.net/hfahe