C# HttpUtility.UrlEncode防止SQL注入

C# HttpUtility.UrlEncode防止SQL注入,c#,asp.net,C#,Asp.net,正在使用HttpUtility.UrlEncode阻止where子句上的SQL注入。但是,正在输入的某些文本有空格,如果将其替换为%20,将停止查询。有更好的选择吗?在数据库查询中使用参数,而不是串联输入。工作完成了。如果听起来像很多工作-考虑这样的工具很容易:< /P> string name = ... int regionId = ... var customers = connection.Query<Customer>( "select * from Custome

正在使用HttpUtility.UrlEncode阻止where子句上的SQL注入。但是,正在输入的某些文本有空格,如果将其替换为%20,将停止查询。有更好的选择吗?

在数据库查询中使用参数,而不是串联输入。工作完成了。如果听起来像很多工作-考虑这样的工具很容易:< /P>
string name = ...
int regionId = ...
var customers = connection.Query<Customer>(
    "select * from Customers where Name = @name and RegionId = @regionId",
    new { name, regionId }).AsList();

在数据库查询中使用参数,而不是连接输入。工作完成了。如果听起来像很多工作-考虑这样的工具很容易:< /P>
string name = ...
int regionId = ...
var customers = connection.Query<Customer>(
    "select * from Customers where Name = @name and RegionId = @regionId",
    new { name, regionId }).AsList();

为了防止SQL注入,最好使用SQL参数。 使用参数时,SQL确保从不执行查询中的参数

永远不要通过连接字符串来构造查询。尤其是当用户输入的内容不可信时

在使用c的情况下,您可以在此处查看:
为了防止SQL注入,最好使用SQL参数。 使用参数时,SQL确保从不执行查询中的参数

永远不要通过连接字符串来构造查询。尤其是当用户输入的内容不可信时

在使用c的情况下,您可以在此处查看:

是-不要根据用户输入手工编写SQL语句!请参阅。是-不要根据用户输入手工编写SQL语句!您好,在基于linq/API的系统中,您将如何做到这一点?IE Results.wherelikeemissioncountry,%+prefixText+%???ObjectQuery contactQuery=context.Contacts.Whereit.LastName=@ln和it.FirstName=@fn,新ObjectParameterln,LastName,新ObjectParameterfn,FirstName;在本例中,ln和fn是参数shi,在基于linq/API的系统中,您将如何做到这一点?IE Results.wherelikeemissioncountry,%+prefixText+%???ObjectQuery contactQuery=context.Contacts.Whereit.LastName=@ln和it.FirstName=@fn,新ObjectParameterln,LastName,新ObjectParameterfn,FirstName;在这种情况下,ln和fn是参数