我们有一个ASP.NET/C#网站。我们的开发人员在亚洲离岸,我刚刚发现他们一直将原始SQL放在网站前端上。
我担心我们现在容易受到SQL注入攻击。有没有人知道如何检测网站中的漏洞,以及关闭这些漏洞的最佳方法?
我担心我们现在容易受到SQL注入攻击。有没有人知道如何检测网站中的漏洞,以及关闭这些漏洞的最佳方法?
尝试从前端检测漏洞可能有所帮助,但你真正应该看的是代码,特别是与DbCommand、SqlCommand等相关的所有代码。关键点,正如你清楚知道的那样,是永远不要将用户输入连接到查询中,而是将其参数化。有好的工具可用,可以使这种参数化易于操作,或者至少比手动操作更容易。例如,如果你有:
using(var cmd = conn.CreateCommand()) {
cmd.CommandText = "delete from Orders where id = " + id;
cmd.ExecuteNonQuery();
}
如果涉及到IT技术,像dapper-dot-net这样的工具能够让您做以下事情:
conn.Execute("delete from Orders where id = @id", new {id});
这是一种代码量较少的方法,主要是复制粘贴,但它完全可以防止注入攻击,并允许重用查询计划。
首先请查看这篇文章:如何在ASP.NET中防止SQL注入
我建议您确保所有的操作都使用存储过程,或者如果您使用常规的SQL命令,则只能使用参数,并且永远不要动态构建CommandText属性的内容。
好的,我会要求他们发送源代码并进行代码查看(或由相对经验丰富的开发人员完成)。