2012-04-01 106 views
0
function filter($p){ 
    $i=0; 
    return str_replace("<","&lt;",str_replace(">","&gt;",str_replace("&","&amp;",$p,$i),$i),$i); 
} 

任何想法通過這個xss預防? 只是我的想法,不做作業通過此過濾器的XSS攻擊?

+1

爲什麼不直接使用htmlspecialchars()? – 2012-04-01 21:45:45

+0

假設編碼器是noob,他不知道htmlspecialchar():D 我不談論如何預防,我想知道如何攻擊:D – n0b0dybk 2012-04-01 21:50:48

+3

Offtopic - 這個網站是不是審查代碼。這就是http://codereview.stackexchange.com/的用途。但作爲一般規則,不要推出自己的「安全」代碼。除非你是專家,否則總會有一個或多個邊緣案例讓你的代碼泄露。 – 2012-04-01 21:53:09

回答

2

正如問題勘誤中提出的,這裏的問題在於你試圖在PHP中推出自己的替代品htmlspecialchars。儘管您已經要求進行現場代碼審查以修復潛在的XSS exploit,但實際上您已經在應用程序中指出了處理漏洞的方式。

雖然你似乎是試圖做(注this answer about black- and white-lists),您可以進行反覆的修正或輸入模式殺毒,您將得到更好的閱讀this documentation on how to address and mitigate XSS exploitsthis additional documentation服務。它應該提供有關審查和重新構建您的應用程序的指導,以便乾淨而安全地處理這些威脅,而不是通過代碼中的多個修復程序來減輕您的緩解策略。

Additional helpful resource

祝您好運與您的申請!

0

千萬不要使用黑名單。始終使用白名單。關於大量不同的攻擊的Read for example here。發人深省的:)

1

可能。例如,如果filter是內使用一個HTML標籤,就像這樣:

<input type="text" value="<?=filter($p)?>"> 

,攻擊者可能會被強迫$p執行XSS攻擊應運而生類似:

something" onfocus="javascript:alert('test') 

所以輸出HTML變爲:

<input type="text" value="something" onfocus="javascript:alert('test')">