我发现我5年旧站点表的所有数据突然混淆了 一些无法通过任何现有sp更新的数据已更新。
经过长时间搜索sp我得出的结论是有人搞乱了我的网站。 我假设它是通过sql注入完成的。
我的网站24/7上有大量的流量,网站有超过100页,日志现在只显示用户输入的页面...更多日志会减慢网站的速度。所以现在我需要采取有效行动。
1.找到有人注射的最佳方法是什么? 2.如何记录他的ip和注射时间 从来没有这样做过,在谷歌上阅读了很多不同意见。请建议您的最佳实践。
答案 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","")
等