我们似乎是通过我们的网站或网络服务进行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
答案 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)