2011-08-14 26 views
0

我有一個跨度在那裏我有這樣的文字裏:JavaScript的XSS內的textarea

/><textarea> 

然後我嘗試用一​​個textarea裏面更換什麼,並把它的文本中編輯跨度的文本。

然後,當我嘗試取消編輯和刪除textarea的,然後將數據返回到跨度,這似乎:

/>及附近的textarea的。

這是錯誤的。

我想避免這種事情,由於xss攻擊。

也是,如果我嘗試跨度內添加以下代碼:

';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT> 

測試是否XSS工作......由於我使用ヶ輛時,我刷新頁面我不會得到任何錯誤...

所以我使用點擊按鈕,textarea出現在這裏面...這裏所有的好,但是當我取消它,所以我可以看到消息回來,因爲它是在跨度內.. XSS警報彈出...

關於如何解決這個問題的任何想法?

+1

提到這個問題:http://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery。這將允許您安全地將textarea中的非代碼插入跨度(轉義HTML)。或者,您可以使用標記語言(如[Markdown](http://en.wikipedia.org/wiki/Markdown)和[Markitup](http://markitup.jaysalvat.com/home/))來允許用戶執行安全的HTML。 – ghayes

+0

謝謝我只需要替換html(),然後用文本()填充文本的跨度。 – fxuser

回答

0

我只需要替換html(),然後用text()填充文本的跨度。

0

只需使用文本節點即可。 (document.createTextNode(text here)創建它,然後appendChild它就像任何其他節點)