xss原理、攻擊方式與防護

xss原理:

xss叫跨站腳本攻擊,是Web程序中常見的漏洞只用於客戶端的攻擊方式,其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當其它用戶瀏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶Cookie、破壞頁面結構、重定向到其它網站等。因此作網站的時候要明白一個道理:用戶的輸入是不可信的,全部可輸入的地方都要進行數據進行處理才能杜絕xss攻擊;node

xss攻擊的二種方式:

1.反射型:一種基於網頁DOM結構的攻擊,該攻擊特色是中招的人是少數人。一般爲經過改變網頁鏈接後面帶的參數來達到他們的攻擊目的;因爲這種危害和範圍都小我就不具體介紹了,具體看下方連接;git

2.存儲型:這種方式多用於評論或發佈文章之類的,內容包含惡意代碼(主要爲script、link、style、iframe、frame);當有人把這些代碼隨評論發佈出來,你點擊查看的時候他就攻擊成功;也能夠經過這些代碼隨意改變你的頁面;這種攻擊方式危害性更大,危害面更廣;github

xss防護的三種方式:

1.編碼:對用戶輸入的數據進行HTML entity編碼express

 

好比用戶輸入:<script>window.location.href=」http://www.baidu.com」;</script>,保存後最終存儲的會是:&lt;script&gt;window.location.href=&quot;http://www.baidu.com&quot;&lt;/script&gt;在展示時瀏覽器會對這些字符轉換成文本內容顯示,而不是一段可執行的代碼。瀏覽器

這裏推薦encode.js這個三方插件對輸入編碼;百度找不到就去github上找;dom

 

2.過濾:移除用戶上傳的DOM屬性和script、link、style、iframe、frame節點xss

好比用戶輸入:<style>body{display:none!important}</script>,保存後最終存儲的會讓你整個網頁爲空白頁,其餘同理;網站

if(tag=='script'||tag=='style'||tag=='link'||tag=='iframe'||tag=='frame') return;  //這樣就對用戶輸入的幾個節點過濾了

3.校訂:避免直接對HTML entity編碼,使用DOM Parse對象進行轉換,校訂不匹配的DOM標籤;這裏推薦domParse.js這個三方插件;編碼

 

 dome地址:https://github.com/MrLQZ/xss  環境爲node+expressspa

 

參考博客:XSS攻擊及防護

相關文章
相關標籤/搜索