有人注入我的网站并在我的网站上运行更新脚本

时间:2017-02-24 13:01:34

标签: sql asp.net sql-injection

我发现我5年旧站点表的所有数据突然混淆了 一些无法通过任何现有sp更新的数据已更新。

经过长时间搜索sp我得出的结论是有人搞乱了我的网站。 我假设它是通过sql注入完成的。

我的网站24/7上有大量的流量,网站有超过100页,日志现在只显示用户输入的页面...更多日志会减慢网站的速度。所以现在我需要采取有效行动。

1.找到有人注射的最佳方法是什么? 2.如何记录他的ip和注射时间 从来没有这样做过,在谷歌上阅读了很多不同意见。请建议您的最佳实践。

2 个答案:

答案 0 :(得分:0)

而不是追踪“坏人”,你应该专注于恢复你的数据库,使你的代码抵抗或无法注入,不知道什么是asp.net的最佳方式,但在java中,众所周知,准备好的语句使不可能让某人对你的数据进行SQL注入。

查看此链接,了解如何在asp.net中改进代码: Classic ASP SQL Injection Protection

答案 1 :(得分:0)

这是我在我的页面上使用的一些代码作为"全部捕获"尝试通过查询字符串进行注入尝试(即通过URL发送的数据):

trap = 0
ref = lcase(request.querystring)

if ref <> "" then
badChars = array("OR 1=1", "select", "drop", "shutdown", "--", "insert", "delete", "waitfor", "union", "0x31", "convert", "truncate", "sysobjects") 
cn = 0
for i = 0 to uBound(badChars) 
if instr(ref,badchars(i)) > 1 then cn=cn+1
next
if cn >=2 then trap = 1
end if

if trap = 1 then .... ban user ip code here

你可以简单地把#34;如果trap = 1那么response.end&#34;这会阻止页面上的任何进一步操作。我宁愿禁止IP一小时。

这也适用于表单输入的request.form。

您可能还需要清理接受表单输入的变量。

data=request.form("emailaddress")
data = replace(data,"'","")
data = replace(data,"union","")