Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 防止SQL注入_C#_Asp.net_Sql_Sql Injection_Protection - Fatal编程技术网

C# 防止SQL注入

C# 防止SQL注入,c#,asp.net,sql,sql-injection,protection,C#,Asp.net,Sql,Sql Injection,Protection,是否有一个函数可以接受字符串作为参数并返回一个“已清理”的字符串,以便支持SQL注入保护?您需要使用参数,或者 LINQ到SQL 实体框架 SQL参数 没有任何功能是完美的或万无一失的。您应该真正致力于通过其他方式(即存储过程、SQL参数化等)防止SQL注入 虽然此功能相当有效:) 我坚信使用参数可以避免SQL注入。您可以编写存储过程或参数化查询来避免它 除了SQL注入之外,参数还有很多好处,例如它可以处理许多与日期和数字有关的问题…您可以使用AddWithValue方法添加参数,如下所示:

是否有一个函数可以接受字符串作为参数并返回一个“已清理”的字符串,以便支持SQL注入保护?

您需要使用参数,或者

LINQ到SQL

实体框架

SQL参数
没有任何功能是完美的或万无一失的。您应该真正致力于通过其他方式(即存储过程、SQL参数化等)防止SQL注入

虽然此功能相当有效:)


我坚信使用参数可以避免SQL注入。您可以编写存储过程或参数化查询来避免它


除了SQL注入之外,参数还有很多好处,例如它可以处理许多与日期和数字有关的问题…

您可以使用AddWithValue方法添加参数,如下所示:

SqlCommand cmd = new SqlCommand("Select * From Test Where TestID = @TestID");
cmd.Parameters.AddWithValue("@TestID", 5);

我不认为存在一个足够聪明的函数来发现是否存在SQL注入的可能性

但最好的办法是避免所有的可能性。例如,使用类型安全的SQL参数进行数据访问

请看一看:


查看安全堆栈交换——您可能最合适的路径——它们的企业安全API,它具有java EE、.NET、PHP、CordDFielCFML、Python、JavaScript、ObjaveC、Roby、Suffet、C++和Perl的功能:

一个免费的、开源的web应用程序安全控制库 使程序员更容易编写低风险的应用程序。这个 ESAPI库旨在使程序员更容易 将安全性改进到现有应用程序中。ESAPI库也 为新的发展打下坚实的基础。考虑到 语言特定差异,所有OWASP ESAPI版本都具有相同的 基本设计:有一套安全控制接口。他们 例如,定义传递给参数类型的参数类型 安全控制。每种方法都有一个参考实现 安全控制。逻辑不是特定于组织的,逻辑 不是特定于应用程序的。例如:基于字符串的输入 验证。每一个都有您自己的实现 安全控制。其中可能包含应用程序逻辑 可能由您的组织开发或为您的组织开发的类。一 示例:企业身份验证


也请阅读此文档:

No,因为它不存在。您希望通过清理??huMpty duMpty来防止sql注入Iwrote@NurlanKenzhebekov问题是:字符串消毒不可靠,是一场“军备竞赛”。正确的方法是完全忘记“清理”字符串,而是使用参数。使用“或一个可以为您执行此操作的库,例如…{blah}”,这样会更好;这不是L2S/EF所独有的;我正在使用HttpContext.Current.Server.HtmlEncode()。这可以保护吗?不可以。它可以防止某些形式的XSS攻击(它们是不同的),但不是所有的,并且不能防止SQL注入
SqlCommand cmd = new SqlCommand("Select * From Test Where TestID = @TestID");
cmd.Parameters.AddWithValue("@TestID", 5);