2012-12-10 37 views
1

更新:編輯,因爲我不知道我在說什麼之前。在預先提交的javascript中刪除「壞」字符的提交數據?

我有一個表單提交給服務器端腳本,該腳本使用該數據爲Web服務生成XML輸出。如果在數據中存在無效字符(我認爲這意味着「不允許在XML中」,但可能與編碼有關),XML會發出cro語。這個錯誤經常發生,因爲許多用戶剪切/粘貼文檔等來填寫表單。

我無法修改使用數據或將其放入XML(無法訪問服務器)的服務器端腳本,因此無法清理數據服務器端。爲了至少緩解問題,直到我們可以添加一些服務器端消毒,我想攔截表單提交與JavaScript和擦洗每個文本輸入和textarea的「壞」字符。我知道如何在表單中循環,並期望我將要在thisString.replace()中引入一個正則表達式來處理它。

我不知道的是(a)在正則表達式中使用.replace()是否正確,如果是,(b)在正則表達式中應該怎麼做。我希望允許儘可能多的字符而不破壞XML輸出。

謝謝。

+0

無論你做什麼,你都需要提醒負責服務器端的人做衛生設施。 JS只能清理系統正常用戶的數據。惡意用戶可以通過使用簡單的tcp連接到您的http服務器輕鬆繞過JS。 – nhahtdh

+1

請原諒? UTF-8可以編碼整個100,000個項目的Unicode目錄。用戶提交什麼類型的字符? –

回答

2

一般的瀏覽器提交的數據爲UTF-8,不管它是從只要你已經設置的編碼設置爲UTF-8 HTTP頭Content-Type: text/html; charset=utf-8

有copypasted有一些例外,在IE課程。

此外,沒有非UTF8字符的東西。您的意思是瀏覽器使用某些utf-8不兼容編碼(例如Windows-1252)對錶單進行編碼。

在JavaScript中沒有什麼可以做的,除了將字符限制爲ASCII字符,但並不能真正阻止普通用戶的操作。無論如何,在編碼攻擊的情況下,您必須始終檢查服務器端的編碼。

+0

謝謝...現在我更好地理解我實際上想要問什麼;問題已更新。 – DanM