SQL注入漏洞

时间:2011-12-16 10:46:14

标签: c# asp.net sql sql-server-2008

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

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

4 个答案:

答案 0 :(得分:6)

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

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

然后像dapper-dot-net这样的工具将允许您执行以下操作:

conn.Execute("delete from Orders where id = @id", new {id});

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

答案 1 :(得分:4)

查看ScrawlrAcunetix

这些是扫描网站漏洞的工具,尤其是SQL注入漏洞。另一种方法是注册其中一家PCI-DSS合规公司。我们使用SecurityMetrics,通常银行会为这些提供折扣。

答案 2 :(得分:1)

首先查看这篇文章:How To: Protect From SQL Injection in ASP.NET

我会确保所有人都使用存储过程,或者如果你有regualr sql命令,你只使用它们参数,而不是动态构建CommandText property的内容

答案 3 :(得分:1)

好吧,我会命令他们向你发送源代码并执行代码视图(或者由相对经验丰富的开发人员完成。