我们有一个ASP.NET / C#网站。我们的开发人员在亚洲离岸,我发现他们已经在网站前端放置了原始SQL。
我担心我们现在容易受到SQL注入攻击。有谁知道如何检测网站上的漏洞以及关闭它们的最佳方法是什么?
答案 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)
这些是扫描网站漏洞的工具,尤其是SQL注入漏洞。另一种方法是注册其中一家PCI-DSS合规公司。我们使用SecurityMetrics,通常银行会为这些提供折扣。
答案 2 :(得分:1)
首先查看这篇文章:How To: Protect From SQL Injection in ASP.NET
我会确保所有人都使用存储过程,或者如果你有regualr sql命令,你只使用它们参数,而不是动态构建CommandText property的内容
答案 3 :(得分:1)
好吧,我会命令他们向你发送源代码并执行代码视图(或者由相对经验丰富的开发人员完成。