xss原理、攻击方式与防御
xss原理:
xss叫跨站腳本攻擊,是Web程序中常見的漏洞只用于客戶端的攻擊方式,其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當其它用戶瀏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶Cookie、破壞頁面結構、重定向到其它網站等。所以做網站的時候要明白一個道理:用戶的輸入是不可信的,所有可輸入的地方都要進行數據進行處理才能杜絕xss攻擊;
xss攻擊的二種方式:
1.反射型:一種基于網頁DOM結構的攻擊,該攻擊特點是中招的人是少數人。通常為通過改變網頁連接后面帶的參數來達到他們的攻擊目的;由于這種危害和范圍都小我就不具體介紹了,具體看下方鏈接;
2.存儲型:這種方式多用于評論或發布文章之類的,內容包含惡意代碼(主要為script、link、style、iframe、frame);當有人把這些代碼隨評論發布出來,你點擊查看的時候他就攻擊成功;也可以通過這些代碼隨意改變你的頁面;這種攻擊方式危害性更大,危害面更廣;
xss防御的三種方式:
1.編碼:對用戶輸入的數據進行HTML entity編碼
?
比如用戶輸入:<script>window.location.href=”http://www.baidu.com”;</script>,保存后最終存儲的會是:<script>window.location.href="http://www.baidu.com"</script>在展現時瀏覽器會對這些字符轉換成文本內容顯示,而不是一段可執行的代碼。
這里推薦encode.js這個三方插件對輸入編碼;百度找不到就去github上找;
?
2.過濾:移除用戶上傳的DOM屬性和script、link、style、iframe、frame節點
比如用戶輸入:<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+express
?
參考博客:XSS攻擊及防御
轉載于:https://www.cnblogs.com/lqzweb/p/7308249.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的xss原理、攻击方式与防御的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Getting Installation
- 下一篇: 微信公众平台开发教程(八)Session