2011-07-28 32 views
7

時據我已經注意到反對XSS保護TinyMCE的做它的元字符自己的轉義,並使用用htmlspecialchars()之後只會擾亂輸出和顯示< P>標籤等,而不是在瀏覽器中渲染它們。關閉Javascript並輸入惡意代碼是一件容易的事情,當打開Javascript的另一用戶訪問內容時將會呈現惡意代碼。將TinyMCE

所以我需要使用適當的服務器端驗證,但確切地說 - 如何 - 我能做到這一點考慮到成千上萬的XSS技術?是否有任何適用於TinyMCE的有效方式,例如「使用htmlspecialchars()和TinyMCE?」

到目前爲止,我已經做了一個白名單允許HTML標籤,更換任何javascript:和類似:void內容中,試圖防止內嵌的JavaScript如onClick="javascript:void(alert("XSS"));",但我覺得這是不夠的。

關於這個問題的任何建議將非常感激,但請記住,某些內容需要正確顯示在輸出上,這就是爲什麼我首先使用TinyMCE。我只需要受到XSS的保護。

另外,雖然在這個問題上;我該如何保護自己免受諸如style="background-image: url(XSS here);"之類的CSS XSS?

回答

0

對於.NET:使用http://msdn.microsoft.com/en-us/security/aa973814.aspx

我也以牙還牙:

$(".userpost").children().off(); 

這樣可以防止用戶利用現有的JavaScript。微軟圖書館最大的煩惱之一是它在所有課堂上增加了「x_」。在某人編輯現有條目並在其前面添加另一個x_之前,這是很好的。因爲上面的代碼使得「x_」前綴沒有意義,所以我只是把它和正則表達式放在一起。

這消除了在VB.Net的「X_」爲3類:

Regex.Replace(myHtml, "(<\w+\b[^>]*?\b)(class="")x[_]([a-zA-Z]*)()?(?:x[_])?([a-zA-Z]*)?()?(?:x[_])?([^""]*"")", "$1$2$3$4$5$6$7") 

我敢肯定有一個更清潔的方式來做到這一點。