2014-09-28 41 views
0

我想知道如果我可以通過&lt;&gt;只更換<>還是我失去了一些東西保護我免受XSS攻擊的網站。保護XSS問題只能通過更換「<' and '>」

例子:

<?php echo '<div>' . $escaped . '</div>' ?> 

我已經知道htmlspecialchars PHP函數&分支機構

+0

如果在一個屬性中打印,「」onmouseover =「DO_BAD_THINGS」「'。 – 2014-09-28 23:09:37

+1

如果這些HTML屬性不是在標籤之間,那麼它們不會被加載......所以我錯了? – 2014-09-28 23:10:51

+0

< div onmouseover ='do ...'&gt逃脫不是嗎? – 2014-09-28 23:12:23

回答

0

答案是否定的,有人會找到他的方式來利用它,不知何故。

你低估了技術的數量和攻擊者的創造力。仔細閱讀OWASP XSS備忘單https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet,瞭解這種情況的發生方式。在你的情況下,它是否防止XSS變成onload屬性?或者成爲一個成爲CSS定義一部分的輸入?在這些情況下,你已經進入一個隱含的標籤,所以你只需要添加JS代碼,沒有理由使用'<'或'>'

用XSS做輸出驗證,這是最簡單的事情,它會隨時隨地保護你,只要你每次寫任何東西(不管它是否來自用戶)並注意上下文(當你正在編寫鏈接時對URL進行轉義/編碼,對JS進行轉義/編碼當您直接寫入JS腳本時,在編寫CSS定義的一部分時轉義/編碼CSS,在編寫JSON數據時轉義/編碼JSON,在任何其他情況下轉義/編碼HTML)。另外,即使它不相關,我通常也會指向這個站點來顯示人們喜歡如何創造性地使用JS http://www.jsfuck.com/ - 這僅僅是模糊處理,但我用它來回避反XSS控件,通常是由第三方製作的。

1

沒有,對於HTML身體,你也將需要編碼&字符以防止攻擊者可能逃逸逃逸。

退房的XSS Experimental Minimal Encoding Rules: -

HTML正文(最多HTML 4.01):

  • HTML實體編碼< &

  • 指定元標記,以避免UTF7字符​​集XSS

XHTML身體:

注意,如果你想進入一個屬性裏面的東西值,那麼你需要正確編碼所有字符無線特別的意義。該XSS (Cross Site Scripting) Prevention Cheat Sheet提及對編碼如下字符: -

&<>"'/

您還必須引用屬性值是有效的逃逸。