xss原理、攻击方式与防御
xss原理:
xss叫跨站腳本攻擊,是Web程序中常見(jiàn)的漏洞只用于客戶端的攻擊方式,其原理是攻擊者向有XSS漏洞的網(wǎng)站中輸入(傳入)惡意的HTML代碼,當(dāng)其它用戶瀏覽該網(wǎng)站時(shí),這段HTML代碼會(huì)自動(dòng)執(zhí)行,從而達(dá)到攻擊的目的。如,盜取用戶Cookie、破壞頁(yè)面結(jié)構(gòu)、重定向到其它網(wǎng)站等。所以做網(wǎng)站的時(shí)候要明白一個(gè)道理:用戶的輸入是不可信的,所有可輸入的地方都要進(jìn)行數(shù)據(jù)進(jìn)行處理才能杜絕xss攻擊;
xss攻擊的二種方式:
1.反射型:一種基于網(wǎng)頁(yè)DOM結(jié)構(gòu)的攻擊,該攻擊特點(diǎn)是中招的人是少數(shù)人。通常為通過(guò)改變網(wǎng)頁(yè)連接后面帶的參數(shù)來(lái)達(dá)到他們的攻擊目的;由于這種危害和范圍都小我就不具體介紹了,具體看下方鏈接;
2.存儲(chǔ)型:這種方式多用于評(píng)論或發(fā)布文章之類的,內(nèi)容包含惡意代碼(主要為script、link、style、iframe、frame);當(dāng)有人把這些代碼隨評(píng)論發(fā)布出來(lái),你點(diǎn)擊查看的時(shí)候他就攻擊成功;也可以通過(guò)這些代碼隨意改變你的頁(yè)面;這種攻擊方式危害性更大,危害面更廣;
xss防御的三種方式:
1.編碼:對(duì)用戶輸入的數(shù)據(jù)進(jìn)行HTML entity編碼
?
比如用戶輸入:<script>window.location.href=”http://www.baidu.com”;</script>,保存后最終存儲(chǔ)的會(huì)是:<script>window.location.href="http://www.baidu.com"</script>在展現(xiàn)時(shí)瀏覽器會(huì)對(duì)這些字符轉(zhuǎn)換成文本內(nèi)容顯示,而不是一段可執(zhí)行的代碼。
這里推薦encode.js這個(gè)三方插件對(duì)輸入編碼;百度找不到就去github上找;
?
2.過(guò)濾:移除用戶上傳的DOM屬性和script、link、style、iframe、frame節(jié)點(diǎn)
比如用戶輸入:<style>body{display:none!important}</script>,保存后最終存儲(chǔ)的會(huì)讓你整個(gè)網(wǎng)頁(yè)為空白頁(yè),其他同理;
if(tag=='script'||tag=='style'||tag=='link'||tag=='iframe'||tag=='frame') return; //這樣就對(duì)用戶輸入的幾個(gè)節(jié)點(diǎn)過(guò)濾了3.校正:避免直接對(duì)HTML entity編碼,使用DOM Parse對(duì)象進(jìn)行轉(zhuǎn)換,校正不匹配的DOM標(biāo)簽;這里推薦domParse.js這個(gè)三方插件;
?
?dome地址:https://github.com/MrLQZ/xss? 環(huán)境為node+express
?
參考博客:XSS攻擊及防御
轉(zhuǎn)載于:https://www.cnblogs.com/lqzweb/p/7308249.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的xss原理、攻击方式与防御的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Getting Installation
- 下一篇: 微信公众平台开发教程(八)Session