我想让用户能够将自定义筛选器应用于 System.Data.DataTable。 目前我有一个非常简单的函数,如下所示:
Dim result = dataTable.Select(txtUserInput.Text)
使用过滤后的结果我想做进一步的操作(例如数据库更新/删除)。
是否需要 sql 注入(inject)保护或“选择”功能是否安全?
谢谢
//编辑: 主要问题是:是否可以滥用“select”函数来操作数据表中的任何数据、执行代码……?如果唯一的危险是此函数可以返回更多/更少的数据,则没有问题。但是,如果数据集中的数据被损坏,那就是一个真正的问题。
最佳答案
在那种情况下您不需要保护 - DataTable.Select 正在对该 DataTable 中保存在内存中的 DataRows 应用过滤器,它实际上并没有连接到数据库/对数据库执行任何操作。
如果您获取用户输入并将其构建到 SQL 语句中,然后针对数据库执行,例如最初填充数据表。在这种情况下,最好的办法是参数化语句。
关于c# - DataTable.Select 需要 SQL 注入(inject)保护吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9309753/