我使用 C# 正则表达式在 Web 输入上实现允许字符的白名单时遇到了一些问题。我试图避免 SQL 注入和 XSS 攻击。我读过允许字符的白名单是要走的路。
输入是人名和公司名。
其中一些问题是:
有和号的公司名称。比如“吉姆父子”。& 号很重要,但也有风险。
名称中的 Unicode 字符(例如,我们有亚洲客户),使用他们的字符集输入他们的名字。我需要将所有这些都列入白名单。
- 公司名称可以有各种斜线,如“S/A”和“S\A”。这些有风险吗?
在看到数据库中已经存在的所有数据(并且由新用户输入)之后,我发现自己想要允许几乎每个字符。
对于处理这些(和其他)问题的良好白名单有什么建议吗?
注意:这是一个遗留系统,所以我无法控制所有代码。我希望通过防止不良数据首先进入系统来减少攻击次数。