【发布时间】:2011-07-01 01:37:29
【问题描述】:
我有一个 HTML 文本输入,用户可以在其中为自己写一个名字。该名称只是一个用户友好的显示名称,它不用于识别数据库中的用户或后端的任何内容。
我想允许 utf-8 字符,这样人们就可以输入他们母语的字符,无论是中文还是瑞典语等等。
但是,我想将某些字符(如 、[、]、?、* 等)列入黑名单,以阻止任何潜在的脚本小子试图利用输入进行 SQL 注入或其他操作。
我认为这将是一个简单的代码,在网络上会有很多示例,但如果有的话,答案就隐藏在如何使用白名单验证电子邮件地址的示例中(仅限英文字母数字字符) ,没有亚洲或其他语言特定字符),或者,奇怪的是,如何完全停止某些字符的按键。
我不想完全停止按键操作,因为我认为这可能会让我的用户感到困惑。相反,我会输出一个错误,说如果他们输入了一个列入黑名单的字符,他们就不能使用字符 X。
那么,对于像我这样完全不擅长正则表达式的人来说,有没有一种直接的方法可以将 Javascript 中的字符列入黑名单?
如果它不妨碍用户输入他们使用的任何语言的时髦字符,我也会选择白名单解决方案。
【问题讨论】:
-
如果只是“阻止任何潜在的脚本小子试图利用输入”,那么为什么还要将任何东西列入黑名单呢?如果您已经知道如何清理您的输入,那么为什么不让某人输入任何旧的东西作为他们的显示名称呢?
-
您会发现使用正则表达式验证将其仅列入白名单而不是黑名单会更快。
标签: javascript html regex whitelist blacklist