更新:编辑,因为我之前并不知道我在说什么。
我有一个提交到服务器端脚本的表单,该脚本使用该数据为Web服务生成XML输出。如果数据中存在无效字符(我认为这意味着"不允许在XML"中,但可能与编码有关),XML就会破坏。错误经常发生,因为许多用户剪切/粘贴word文档等以填写表单。
我无法修改使用数据的服务器端脚本或将其放入XML(我无法访问服务器),因此无法对数据服务器端进行清理。为了至少缓解问题,直到我们可以添加一些服务器端清理,我想用javascript截取表单提交并擦除每个文本输入和文本区域"坏"字符。
我知道如何遍历表单,并且我希望我想将一个正则表达式放到thisString.replace()中来处理它。
我不知道的是(a)使用带有正则表达式的.replace()是否是正确的方法,如果是,(b)正则表达式应该实际应用的内容。我想在不破坏XML输出的情况下允许尽可能多的字符。
感谢。
答案 0 :(得分:2)
一般情况下,只要您使用http标头Content-Type: text/html; charset=utf-8
当然,IE中有一些例外。
此外,没有非UTF8字符。您的意思是浏览器使用某些utf-8不兼容的编码对表单进行编码,例如Windows-1252。
除了将字符限制为ASCII字符外,您无法在javascript中执行任何操作,但这并不能阻止除普通用户之外的任何操作。在编码攻击的情况下,您必须始终检查服务器端的编码。