【发布时间】:2011-08-05 15:40:15
【问题描述】:
我希望能够将用户输入限制为有效字符的白名单,但我不想阻止来自其他文化的人注册。 到目前为止,我有这个:
^[a-zA-Z0-9èéêëàáâãäçìíîïòóôõöùúûü-_]*$
它允许大多数法语口音,但拉丁字符集中的口音列表是巨大的!我宁愿使用白名单而不是黑名单,以防我错过了什么。
注意,这将适用于 C#,但我想使用正则表达式进行客户端验证,以使双方保持一致。当我将输入保存到数据库时,我也在对输入进行 HTML 编码。
是否有更优雅的方法可以使正则表达式重音不敏感,但仍具有足够的限制性以防止 XSS?我不想疏远我的用户。
我希望能够有一些标点符号,但不要让自己受到 XSS 攻击,例如,我希望有人输入他们的公司名称:如果有人在 Yahoo! 工作,他们应该能够注册。
【问题讨论】:
-
ECMAscript RegExp 类不支持 unicode,超出 \u.... 转义以匹配单个代码点:[ECMA-262 标准][1]。例如,
\w转义只包括 ASCII 字母和数字,加上“_”。 [1]:ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf -
我是不是走错了路?我想更广泛的问题是在服务器端防止 XSS 的最佳验证是什么(而不是简单地对所有内容进行 HTML 编码)?
-
我将把服务器端功能拆分为一个只用于字母数字,一个用于标点符号。感谢您的帮助!
标签: c# javascript regex validation