2014-03-14 115 views
2

如果我的輸入不允許<和>字符,可能會發生XSS攻擊嗎?XSS沒有HTML標籤

Example: I enter <script>alert('this');</script> text 

但如果我刪除<和>腳本不是文本:

I enter script alert('this'); script text 
+0

如何渲染用戶的輸入? AKA,打印它的代碼在哪裏? –

+0

用戶輸入呈現爲純文本(未轉義),刪除字符< and > – VMOrtega

+0

從頭頂開始,仍然可以確定使用UTF-7編碼的XSS。然後,它取決於文本呈現的上下文(即,它僅在標記內,或者在textarea的更具體的上下文中,或者在html標記內等等) –

回答

-2

我認爲這是不可能的。 HTML標籤在這次攻擊中非常重要,所以網站可以閱讀/理解我們提出的問題。但是,如果用於文本加載注入,可能有或沒有HTML標籤。

4

如果用戶提供的輸入打印HTML屬性裏面,你還需要逃避引號,或者你會很容易受到輸入這樣的:

" onload="javascript-code" foobar=" 

你也應該大致逃脫符號字符,因爲它需要在HTML文檔中進行編碼,否則可能會破壞您的佈局。

所以,你應該照顧以下字符:<> &「」

您應該然而沒有完全剝奪他們卻用正確的HTML代碼,即& LT代替它們; & GT; &放大器; & QUOT; &#X27;

5

是的,它仍然是可能的

例如,假設您的網站噴射用戶輸入到以下位置

<img src="http://example.com/img.jpg" alt="USER-INPUT" /> 

USER-INPUT如果是" ONLOAD="alert('xss'),這將提供必要的

<img src="http://example.com/img.jpg" alt="" ONLOAD="alert('xss')" /> 

無尖括號中。

此外,請檢查出OWASP XSS Experimental Minimal Encoding Rules

對於HTML體:

HTML實體編碼< &

在元標記指定的字符集,以避免UTF7 XSS

對於XHTML體:

HTML實體編碼< &>

限制輸入到charset http://www.w3.org/TR/2008/REC-xml-20081126/#charsets

所以身體內,你可以逃脫只是編碼(或拆除)字符的子集通常建議以防止XSS。但是,你不能屬性中做到這一點 - 全XSS (Cross Site Scripting) Prevention Cheat Sheet提出以下建議,和他們沒有一個最小的選擇:

除了字母數字字符,逃避與HTML實體&#xHH;格式,包括所有空格字符。 (HH =十六進制值)

的主要是雖然以覆蓋三種類型的指定的屬性值的方法:

  • 無報價
  • 單引號
  • 雙引號

以這種方式進行編碼將在所有三種情況下防止屬性值中的XSS。

也要警惕UTF-7攻擊不需要角括號字符。但是,除非將字符集顯式設置爲UTF-7,否則這種攻擊類型爲isn't possible in modern browsers

+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-