SQL注入漏洞

Rup*_*Rup 3 c# sql asp.net sql-server-2008

我们有一个ASP.NET/C#网站.我们的开发人员在亚洲离岸,我发现他们一直在网站前端放置原始SQL.

我担心我们现在容易受到SQL注入攻击.有谁知道如何检测网站上的漏洞以及关闭它们的最佳方法是什么?

Mar*_*ell 6

尝试从前面检测漏洞可能会有所帮助,但实际上您应该查看代码,特别是与DbCommand,SqlCommand等相关的所有代码.关键点,如您所知,永远不会将用户输入连接到查询,但要参数化.有很好的工具可以使这种参数化变得容易 - 或者至少比手动操作更容易.例如,如果您有:

using(var cmd = conn.CreateCommand()) {
    cmd.CommandText = "delete from Orders where id = " + id;
    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

那么像dapper-dot-net这样的工具将允许你做以下事情:

conn.Execute("delete from Orders where id = @id", new {id});
Run Code Online (Sandbox Code Playgroud)

这是一个较少的代码,主要是复制粘贴,但完全注入安全,并允许查询计划重复使用.