目前,我根本不允许使用撇号(以及您可以看到的其他字符),并为每个字段重申:
foreach(char c in Comments)
{
if(c=='\'' || c=='$' || c=='\"' || c=='&' || c=='%' || c=='@' || c=='-' || c=='<' || c=='>')
{
errorMessage = "You have entered at least one invalid character in the \"Comments\" field. Invalid characters are: [\'], [\"], [&], [$], [@], [-], [<], [>], and [%]";
}
}
我已经编写了一段时间,而且我越来越好,但真正的问题是,虽然我确信有一种方法可以有效地“剥离”或以其他方式验证用户输入,但我不确定哪个方法是最好的,在安全危机迫在眉睫之前可能不会。
如果必须,我将决定根本不允许在表单中使用单引号(就像现在一样),但这可能会加重任何命名的人说......名称字段的 Bill O'Reilly 等,等等。
可能还有其他(好吧,我不知道该怎么称呼它们,“插件?”“外部程序?”)可以为我完成这项工作,但这实际上是无用的,因为我不仅不知道如何要集成它,我不知道如何专门针对我的 Web 界面/数据库进行定制。
是否有任何代码可以帮助我从正常的撇号中检测到 sql 注入撇号(可能通过它周围的字符?)?请记住,我的某些字段最多可容纳 500 个字符(文本区域),一个最多可容纳 1,000 个字符。
感谢您的任何想法或帮助!