【发布时间】:2017-04-14 05:59:48
【问题描述】:
假设我有一个表单元素,它应该允许几乎任何合理的字符串命名某些东西(例如这个问题的标题)。
我如何验证字符串是合理的,而不是奇怪或不安全的东西? (这里假设像Unicode表情符号☺这样的东西是合理的)
检查所有转义字符,如换行符、换页符等,当然是给定的。长度之类的东西虽然比较难,因为只有 1 个字符的英文描述性名称非常难,但在中文中微不足道。
大约有 31 个 Unicode 类,哪些是安全的?
在 Javascript 或 C# 中完整的正则表达式或类似检查是什么样的?
【问题讨论】:
-
就上下文而言,您试图使其安全的是什么?插入数据库、XSS 或未经验证的用户输入是否安全?
-
以上所有。
-
只要你对你的sql命令使用参数化查询,任何输入都可以安全地防止sql注入。此时,您只需要在数据库中指定要存储数据的列是 unicode。当您显示任何内容时,您需要确保使用 HTML 编码程序,这些程序可用于 javascript 以及大多数服务器端脚本语言。
-
[A-Z]是唯一一个对于所有可能和合理的地方都可以发送此类数据的选项。即使是小写字母也可能使用不正确的 UTF-7 编码来破坏代码......绝对数字可能会被错误地视为带有错误代码的数字...... {拖钓结束} - 您需要定义比“安全”更好的目标让问题得到回答。 -
@AlexeiLevenkov 输入类似于此问题的标题
标签: javascript c# unicode