C# DataTable。是否选择需要的SQL注入保护?

C# DataTable。是否选择需要的SQL注入保护?,c#,.net,database,vb.net,C#,.net,Database,Vb.net,我希望用户能够对System.Data.DataTable应用自定义筛选器。 目前,我有一个非常简单的函数,如下所示: Dim result = dataTable.Select(txtUserInput.Text) 对于筛选的结果,我希望执行进一步的操作(例如,数据库更新/删除) 需要sql注入保护还是“选择”功能安全 多谢各位 //编辑: 主要问题是:“选择”功能是否可以被滥用来操作数据表中的任何数据、执行代码等。。。?如果唯一的危险是此函数返回的数据太多/太少,则没有问题。但是,如

我希望用户能够对System.Data.DataTable应用自定义筛选器。 目前,我有一个非常简单的函数,如下所示:

   Dim result = dataTable.Select(txtUserInput.Text)
对于筛选的结果,我希望执行进一步的操作(例如,数据库更新/删除)

需要sql注入保护还是“选择”功能安全

多谢各位

//编辑:
主要问题是:“选择”功能是否可以被滥用来操作数据表中的任何数据、执行代码等。。。?如果唯一的危险是此函数返回的数据太多/太少,则没有问题。但是,如果数据集中的数据被破坏,这是一个真正的问题。

在该实例中,您不需要保护—DataTable。Select对该DataTable内存中的数据行应用筛选器,它实际上并没有连接到数据库或对数据库执行任何操作


如果将用户输入构建到SQL语句中,然后对db执行,例如,最初填充数据表,则需要保护。在这种情况下,最好是参数化语句。

只匹配字母数字字符和字符-,+,,,=,!任何空格

您可以使用sql参数,或者切换到LINQ to sql,它可以为您保护注入攻击。

认为他想做一些更新,例如使用过滤的内容,因此需要保护。主要问题是:“选择”功能是否可以被滥用来操作数据表中的任何数据、执行代码等。。。?如果唯一的危险是此函数返回的数据太多/太少,则没有问题。但是如果数据集中的数据被破坏,这是一个真正的问题。@Mimefilt您可以选择您的注入字符串到单元格中。当您在之后使用此单元格进行更新时,结果可能会很糟糕。所以我认为一般来说,增加对它的保护是可以的。哦,太好了,另一个完全武断的限制。“对不起,您不能限制到包含“?”的行。”考虑到这一点,您可以全速进入在国际和多语言世界中构成字母数字字符的内容。
CREATE PROCEDURE dummy(@x AS VARCHAR(MAX))AS EXEC'UPDATE mytable SET column=othercolumn='+@x+''(为了说明这一点,在任何特定的RDBMS中不一定完全正确。)参数不是万能药;非参数化的,甚至是动态的SQL是安全的,参数化的SQL很容易受到注入攻击。虽然编写安全的参数化代码更容易,但真正重要的是如何编写SQL,而不是是否使用查询参数。