需要SQL注入帮助

时间:2014-12-31 01:13:00

标签: sql-server sql-injection

我们似乎是通过我们的网站或网络服务进行SQL注入的受害者。所有aspnet_xxxx表都会将html附加到某些列,例如UserName,Email,Passwords等......以及我们拥有的其他表。

我不太了解如何跟踪它的来源以及如何阻止它。

我们正在使用IIS 7和SQL Server 2008。

我不确定您需要哪些其他信息来帮助我解决这个问题。

编辑**     这是附加到每个有空间的文本列的html     >

</title><style>.apjv{position:absolute;clip:rect(390px,auto,auto,452px);}</style><div class=apjv>Potential borrowers must adhere <a href=http://paydayloansforlivei.com >same day payday loans</a> solve this to applyin

4 个答案:

答案 0 :(得分:2)

在您的应用程序的某个地方,您的代码看起来像这样:

string sql = "SELECT <columns> FROM <table> WHERE someColumn = '" + someVariable + "'";

这是你注射的来源。 您必须浏览网站的应用程序源代码,直到找到它为止。没有捷径。

找到后,您需要将其更正为:

string sql = "SELECT <columns> FROM <table> WHERE someColumn = @Parameter";

然后,可能在不同的地方,你需要像这样处理参数:

SqlCommand cmd = new SqlCommand(sql);
cmd.Parameters.Add("@Parameter", SqlDbType.NVarChar, 50).Value = someVariable;

答案 1 :(得分:0)

所有html是相同还是相似?如果是这样,您从Web表单获取数据的方式可能有问题。我要看的第二件事是输入清理,以确保没有插入某些字符等。我还建议使用预准备语句,因为它们可以防止SQL注入。参考准备好的语句以防止SQL注入here

答案 2 :(得分:0)

我建议的一件事是尝试将您的Web服务器日志与表的创建相关联。你能看到创建SQL注入结果的字段/值的日期/时间吗?如果是这样,请在Web服务器日志中查找该时间并查看发出的HTTP请求。那会告诉你从哪里开始寻找。如果请求是GET,那么查询参数应该告诉你很多关于做了什么,但即使它是POST并且你不知道输入,你至少知道要启动哪个文件/路径从审查代码。

可能需要经验丰富的开发人员(理想情况下熟悉代码的人)进行审核,以查找注射的位置。

答案 3 :(得分:0)

  • 如果是查询,请查看他们来自哪里,如果您的数据库 恢复模式不是简单,它 FULL 那么你可以 从事务日志文件( db_name.ldf )查询它是 一个有用的链接:how to read log from ldf file
  • 如果是注入,您需要查看应用程序源代码并查看应用程序修改数据的方式,这是一个有用的链接:SQL Injection