HTML5引入的新標籤有一些有趣的屬性,例如poster、autofocus、onerror、formaction、oninput,這些屬性均可以用來執行javascript。這會致使XSS和CSRF跨域請求僞造。javascript
HTML5去掉了不少過期的標籤,例如<center>和<frameset>,同時又引入了許多有趣的新標籤,例如<video>和<audio>標籤能夠容許動態的加載音頻和視頻。php
HTML5引入的新標籤包括<Audio>、<Video>、<Canvas>、<Article>、<Footer>等等,而這些標籤又有一些有趣的屬性,例如poster、autofocus、onerror、formaction、oninput,這些屬性均可以用來執行javascript。這會致使XSS和CSRF跨域請求僞造。html
下面咱們要講到就是這些關鍵載體。它容許建立XSS的變種而且能夠繞過現有的XSS過濾器。前端
首先來看一個標籤:java
它使用了一個source標籤,而沒有指定具體的src,因此後面的onerror方法會當即獲得執行。後端
下面是video的poster屬性,它連接到一個圖像,是指當視頻未響應或緩衝不足時,顯示的佔位符。跨域
另外還有HTML5新引入的autofocus和formaction屬性,autofocus會讓元素自動的獲取焦點,而formaction屬性能覆蓋 form 元素的action 屬性。ide
在這個項目裏存在用戶輸入的地方,咱們雖然已經針對舊有的標籤以及屬性進行了過濾和清洗,可是還會存在新標籤攻擊的漏洞,攻擊者利用上面的示例方式就能夠對系統進行XSS注入攻擊。例如攻擊者輸入http://www.yujie.com/1.php?text=<videoposter=」javascript:alert(1)」>時就能當即運行攻擊腳本。post
咱們對此攻擊的防護方式是,對前端或者後端的過濾器進行優化,添加過濾規則或者黑名單。性能