When it comes to SQL injection detection, we at The Daily WTF could be doing better. It's not that I don't trust Alex's modifications to our CMS system to be injection-proof, I'm just saying that I'd prefer that you people didn't post comments like "') DELETE FROM Articles --". Or, if you must, at least "') DELETE FROM Articles WHERE Author_Name <> 'Jake Vinson' --".
But I'm getting ahead of myself. The point here is that we should've employed a strategy that B. V. tipped us off to so we could learn when "Some one [was] trying to Hack the Site."
sqlArray = "select%20|delete%20|update%20|insert%20|create%20|alter%20|drop%20|truncate%20|sp_" idx = split(sqlArray,"|") InjectionFound = false for i = 0 to ubound(idx) 'Response.Write(idx(i)) pos=InStr(1,Request.QueryString,idx(i),0) if pos <> 0 then InjectionFound = true exit for else InjectionFound = false end if next if InjectionFound = false then 'Response.Write("Injection(s) Not Found") else strContents = "Some one is trying to Hack the Site please check detials given below" & "<br><br>" strContents = strContents &"QUERY_STRING = " & Request.ServerVariables("QUERY_STRING") & "<br>" strContents = strContents & "REMOTE_ADDR = " & Request.ServerVariables("REMOTE_ADDR") & "<br>" strContents = strContents & "REMOTE_HOST = " & Request.ServerVariables("REMOTE_HOST") & "<br>" strContents = strContents & "REMOTE_USER = " & Request.ServerVariables("REMOTE_USER") & "<br>" strContents = strContents & "REQUEST_METHOD = " & Request.ServerVariables("REQUEST_METHOD") & "<br>" strContents = strContents & "SCRIPT_NAME = " & Request.ServerVariables("SCRIPT_NAME") & "<br>" strContents = strContents & "SERVER_NAME = " & Request.ServerVariables("SERVER_NAME") & "<br>" Set objCDO = Server.CreateObject("CDONTS.NewMail") objCDO.MailFormat = 0 ' html format objCDO.BodyFormat = 0 ' html format objCDO.To = "[email protected]" objCDO.From = "[email protected]" objCDO.Importance = 2 objCDO.Subject = Request.ServerVariables("SERVER_NAME") & " | Hacker Info" objCDO.Body = strContents objCDO.Send Response.Redirect("/") Response.end end if
My favorite part is the commented-out "Injection(s) Not Found" alert. Prior to its removal, I wonder how many hundreds or thousands of requests helpfully informed users that they weren't trying to hack the site.