如果我的輸入不允許<和>字符,可能會發生XSS攻擊嗎?XSS沒有HTML標籤
Example: I enter <script>alert('this');</script> text
但如果我刪除<和>腳本不是文本:
I enter script alert('this'); script text
如果我的輸入不允許<和>字符,可能會發生XSS攻擊嗎?XSS沒有HTML標籤
Example: I enter <script>alert('this');</script> text
但如果我刪除<和>腳本不是文本:
I enter script alert('this'); script text
我認爲這是不可能的。 HTML標籤在這次攻擊中非常重要,所以網站可以閱讀/理解我們提出的問題。但是,如果用於文本加載注入,可能有或沒有HTML標籤。
如果用戶提供的輸入打印HTML屬性裏面,你還需要逃避引號,或者你會很容易受到輸入這樣的:
" onload="javascript-code" foobar="
你也應該大致逃脫符號字符,因爲它需要在HTML文檔中進行編碼,否則可能會破壞您的佈局。
所以,你應該照顧以下字符:<> &「」
您應該然而沒有完全剝奪他們卻用正確的HTML代碼,即& LT代替它們; & GT; &放大器; & QUOT; &#X27;
是的,它仍然是可能的
例如,假設您的網站噴射用戶輸入到以下位置
<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-
如何渲染用戶的輸入? AKA,打印它的代碼在哪裏? –
用戶輸入呈現爲純文本(未轉義),刪除字符< and > – VMOrtega
從頭頂開始,仍然可以確定使用UTF-7編碼的XSS。然後,它取決於文本呈現的上下文(即,它僅在
標記內,或者在textarea的更具體的上下文中,或者在html標記內等等) –