我们有一个ASP.NET/C#网站。我们的开发人员在亚洲的离岸,我刚刚发现他们一直在网站前端放置原始SQL。
我担心我们现在很容易受到SQL注入攻击。有谁知道我如何检测网站上的漏洞,以及关闭它们的最好方法是什么?
发布于 2011-12-16 18:59:56
尝试从前端检测漏洞可能会有所帮助,但实际上您应该查看代码,特别是与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});这是较少的代码,主要是复制-粘贴,但完全是注入安全的,并允许查询计划重用。
发布于 2011-12-16 18:52:03
了解一下Scrawlr或Acunetix
这些工具可以扫描网站的漏洞,特别是SQL注入。另一种方法是与符合PCI-DSS的公司之一签约。我们使用SecurityMetrics,银行通常会对这些提供折扣。
发布于 2011-12-16 18:50:23
首先看看这篇文章:How To: Protect From SQL Injection in ASP.NET
我会确保您要么使用存储过程,要么使用regualr sql命令,只将它们与参数一起使用,而不是动态构建CommandText property的内容
https://stackoverflow.com/questions/8533046
复制相似问题