xss攻击突破转义_WEB安全之XSS攻击方式与防御方式
上一期給大家簡單介紹XSS以及其操作,本期將帶大家了解XSS比較常見的攻擊方式與防御方式,一起去了解一下~
XSS 常見攻擊方法
1、繞過 XSS-Filter,利用 <> 標簽注入 Html/JavaScript 代碼;
2、利用 HTML 標簽的屬性值進行 XSS 攻擊。例如:<img src=“javascript:alert(‘xss’)”/>;(當然并不是所有的 Web 瀏覽器都支持 Javascript 偽協(xié)議,所以此類 XSS 攻擊具有一定的局限性)
3、空格、回車和 Tab。如果 XSS Filter 僅僅將敏感的輸入字符列入黑名單,比如 javascript,用戶可以利用空格、回車和 Tab 鍵來繞過過濾,例如:<img src=“javas cript:alert(/xss/);”/>;
4、利用事件來執(zhí)行跨站腳本。例如:<img src=“#” οnerrοr= “alert(1)”/>,當 src 錯誤的視乎就會執(zhí)行 onerror 事件;
5、利用 CSS 跨站。例如:body {backgrund-image: url(“javascript:alert(‘xss’)”)};
6、擾亂過濾規(guī)則。例如:<IMG SRC=“javaSCript: alert(/xss/);”/>;
7、利用字符編碼,通過這種技巧,不僅能讓 XSS 代碼繞過服務端的過濾,還能更好地隱藏 Shellcode;( JS 支持 unicode、eacapes、十六進制、十進制等編碼形式);
8、拆分跨站法,將 XSS 攻擊的代碼拆分開來,適用于應用程序沒有過濾 XSS 關鍵字符(如<、>)卻對輸入字符長度有限制的情況下;
9、DOM 型的 XSS 主要是由客戶端的腳本通過 DOM 動態(tài)地輸出數(shù)據(jù)到頁面上,它不依賴于提交數(shù)據(jù)到服務器,而是從客戶端獲得DOM中的數(shù)據(jù)在本地執(zhí)行。容易導致 DOM 型的 XSS 的輸入源包括:Document.URL
Location(.pathname|.href|.search|.hash)、Document.referrer、Window.name、Document.cookie、localStorage/globalStorage;
XSS 如何防御?
從上面的介紹可知,XSS 漏洞是由于對用戶提交的數(shù)據(jù)沒有經過嚴格的過濾處理造成的,所以防御的原則就是不相信用戶輸入的數(shù)據(jù),對輸入進行過濾,對輸出進行編碼。
1、使用 XSS Filter
針對用戶提交的數(shù)據(jù)進行有效的驗證,只接受我們規(guī)定的長度或內容的提交,過濾掉其他的輸入內容。比如:
表單數(shù)據(jù)指定值的類型:年齡只能是 int 、name 只能是字母數(shù)字等。 過濾或移除特殊的 html 標簽:<script>、<iframe>等。 過濾 js 事件的標簽:onclick、onerror、onfocus等。
2、html 實體
當需要往 HTML 標簽之間插入不可信數(shù)據(jù)的時候,首先要做的就是對不可信數(shù)據(jù)進行 HTML Entity 編碼,在 html 中有些字符對于 HTML 來說是具有特殊意義的,所以這些特殊字符不允許在文本中直接使用,需要使用實體字符。 html 實體的存在是導致 XSS 漏洞的主要愿意之一,因此我們需要將實體轉化為相應的實體編號。
3、JavaScript編碼
這條原則主要針對動態(tài)生成的JavaScript代碼,這包括腳本部分以及HTML標簽的事件處理屬性(如onerror, onload等)。在往JavaScript代碼里插入數(shù)據(jù)的時候,只有一種情況是安全的,那就是對不可信數(shù)據(jù)進行JavaScript編碼,并且只把這些數(shù)據(jù)放到使用引號包圍起來的值部分(data value)之中,除了上面的那些轉義之外,還要附加上下面的轉義:
轉成 / 轉成 / ; 轉成 ;(全角;)
注意:在對不可信數(shù)據(jù)做編碼的時候,不能圖方便使用反斜杠 對特殊字符進行簡單轉義,比如將雙引號 ”轉義成 ”,這樣做是不可靠的,因為瀏覽器在對頁面做解析的時候,會先進行HTML解析,然后才是JavaScript解析,所以雙引號很可能會被當做HTML字符進行HTML解析,這時雙引號就可以突破代碼的值部分,使得攻擊者可以繼續(xù)進行XSS攻擊;另外,輸出的變量的時候,變量值必須在引號內部,避免安全問題;更加嚴格的方式,對除了數(shù)字和字母以外的所有字符,使用十六進制xhh 的方式進行編碼。
4、Http Only cookie
許多 XSS 攻擊的目的就是為了獲取用戶的 cookie,將重要的 cookie 標記為 http only,這樣的話當瀏覽器向服務端發(fā)起請求時就會帶上 cookie 字段,但是在腳本中卻不能訪問 cookie,這樣就避免了 XSS 攻擊利用 js 的 document.cookie獲取 cookie。
睿江云官網(wǎng)鏈接:www.eflycloud.com
總結
以上是生活随笔為你收集整理的xss攻击突破转义_WEB安全之XSS攻击方式与防御方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车打火前发动机灯原来常亮,换节气门后开始
- 下一篇: sql是否包含多个字符串_工作中遇到的9