2013-05-15 67 views
1

SO一直阻止我發佈,我想這樣的稱號終於拿到了冠軍,讓我後雖然那種很爛可以隨意編輯/改變它。如何防止腳本從正在運行

我有字段用戶可以填寫並在JavaScript中,我們有

'${chart.title}' 

之類的東西。它是足夠的,只是去掉了單引號字符,使得它們無法逃脫回JavaScript的?還是有其他的方式收出,與單引號字符開始的字符串。

$ {chart.title}在上一頁中插入用戶輸入的標題,所以很自然他們可以輸入類似「Title」+ callMethod()+'RestOfTitle「的方法將callMethod注入到我的javascript中。

感謝, 院長

+0

你傳遞輸入到服務器?如果你是,我相信這將是一個XSS過濾器的地方。 – bfavaretto

回答

1

最好的辦法是限制輸入字母數字和空格字符。

如果你想允許標題裏的任何東西,你可以用一個避開功能。 http://xkr.us/articles/javascript/encode-compare/

剛剛剝離的單引號字符字符串是絕對不夠的。出於一個原因考慮換行。

1

有幾個選項。

首先採取非常有限制的方式,爲您的標題輸入字段進行所謂的white-list validation並始終對輸出到頁面的文本進行編碼。這將過濾掉所有不需要的(和潛在危險的)字符,並確保如果它們中的一些通過過濾器(或者有人更新文本以在過濾器被應用後包含一些js代碼),則編碼過程使得所有惡意js腳本不可運行(它變成純文本)。

其次你讓你的用戶輸入過他們想要的東西(這是非常不推薦的方式,但有時開發商要求做的話),但始終編碼的文本,你輸出到頁面。

您可以使用正則表達式實現自己白名單驗證,或者您可以使用圖書館之一。

相關問題