2012-03-24 246 views
0

我知道,爲了防止XSS,我們需要具備情境感知能力。以正確的方式預防XSS

當我們做echo $ userinput;我們需要意識到這樣的事實,即如果輸入進入文本框值,或文本區域值或劃分html區域等等。

我想簡化回聲業務,以便我可以使用單個函數來滿足大部分回聲需求。考慮到這一點,我將以下功能放在一起,但我不確定,如果依靠它是一個好主意。

當然,我做了一些假設。 這就是我總是使用內置的urlencode for urls。我虔誠地界定以'或屬性」。

考慮到這一點,我可以使用下面的safeecho,而不是普通的回聲,以防止XSS?

function safeecho($str) 
{ 

    return htmlentities($str, ENT_QUOTES, "UTF-8"); 

} 

有一兩件事我不知道是<Style>上下文我見過人們談論樣式表的「表達式」問題,但我不確定這是怎麼處理的,但是因爲我不打算在樣式表中輸出userinput,或者javascript ,我並不擔心這些事情!當我發現自己需要在js區域或樣式表中輸出userinput時,我不會使用這個函數,但我仍然對你的意見感興趣,以便如何處理這些情況也是如此再次,我是主要是擔心的是常見的東西,即HTML和表單對象。

底線問題是強迫utf8和ent_quotes,我安全嗎?

+0

你不應該在這裏使用Javascript標籤嗎? – tchrist 2012-03-24 21:33:20

+0

@tchrist我不確定你是什麼意思的「在這裏」? – 2012-03-24 21:35:42

回答

0

是否有htymities逃脫'。如果是這樣,它應該是大多好。總是有你需要處理的javascript:urls的問題。還要記住,像onclick這樣的HTML屬性實際上是JavaScript,所以你的函數在那裏沒有效果。你將不得不做js轉義。查看OWASP xss預防備忘單。關於CSS,請儘量避免將用戶數據放在那裏。它需要基於白名單的密鑰值驗證方法。