我想知道如果我可以通過<
和>
只更換<
和>
還是我失去了一些東西保護我免受XSS攻擊的網站。保護XSS問題只能通過更換「<' and '>」
例子:
<?php echo '<div>' . $escaped . '</div>' ?>
我已經知道htmlspecialchars
PHP函數&分支機構
我想知道如果我可以通過<
和>
只更換<
和>
還是我失去了一些東西保護我免受XSS攻擊的網站。保護XSS問題只能通過更換「<' and '>」
例子:
<?php echo '<div>' . $escaped . '</div>' ?>
我已經知道htmlspecialchars
PHP函數&分支機構
答案是否定的,有人會找到他的方式來利用它,不知何故。
你低估了技術的數量和攻擊者的創造力。仔細閱讀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控件,通常是由第三方製作的。
沒有,對於HTML身體,你也將需要編碼&
字符以防止攻擊者可能逃逸逃逸。
退房的XSS Experimental Minimal Encoding Rules: -
HTML正文(最多HTML 4.01):
HTML實體編碼
< &
指定元標記,以避免UTF7字符集XSS
XHTML身體:
HTML實體編碼
< & >
限制輸入到charset http://www.w3.org/TR/2008/REC-xml-20081126/#charsets
注意,如果你想進入一個屬性裏面的東西值,那麼你需要正確編碼所有字符無線特別的意義。該XSS (Cross Site Scripting) Prevention Cheat Sheet提及對編碼如下字符: -
&
,<
,>
,"
,'
,/
您還必須引用屬性值是有效的逃逸。
如果在一個屬性中打印,「」onmouseover =「DO_BAD_THINGS」「'。 – 2014-09-28 23:09:37
如果這些HTML屬性不是在標籤之間,那麼它們不會被加載......所以我錯了? – 2014-09-28 23:10:51
< div onmouseover ='do ...'&gt逃脫不是嗎? – 2014-09-28 23:12:23