Sql server 2005 我的网站数据库被黑客入侵了

Sql server 2005 我的网站数据库被黑客入侵了,sql-server-2005,asp-classic,Sql Server 2005,Asp Classic,我的网站受到了一些恶意脚本/title script src=http://google-stats46.info/ur.php的攻击。此脚本将自动附加到某个表的任何列。我已经删除了这个脚本。但几个小时后,它又出现在一些表格中。但这次是/title script src=http://google-stats45.info/ur.php 这已经发生了一周了。我不知道这怎么可能。 请给我解决方案更改数据库连接的用户名和密码。可能是一些简单的用户和密码,一个脚本发现了它们。检查您的网站(或连接到使用

我的网站受到了一些恶意脚本/title script src=http://google-stats46.info/ur.php的攻击。此脚本将自动附加到某个表的任何列。我已经删除了这个脚本。但几个小时后,它又出现在一些表格中。但这次是/title script src=http://google-stats45.info/ur.php 这已经发生了一周了。我不知道这怎么可能。
请给我解决方案

更改数据库连接的用户名和密码。可能是一些简单的用户和密码,一个脚本发现了它们。

检查您的网站(或连接到使用此数据库的internet的任何其他端点)是否存在攻击。

,如果脚本再次出现,则更新问题,可能只是一个简单的用户/密码问题,可以通过这种方式解决。。。如果没有,可能是您网站的URL,可能有人会在这里查找安全漏洞:)

在您的IIS日志中查找术语
强制转换(
以尝试查找SQL注入尝试


如果您在表中看到javascript,则这是一种典型的SQL注入攻击。在附加到SQL命令之前,您需要更新ASP页面以验证来自查询字符串的输入

至于数据库的当前状态,您可以恢复到备份,也可以编写自定义脚本来清除表中插入的javascript

我翻遍了一些旧代码,找到了一个我为一个几年前遭受注入攻击的旧站点编写的函数(如下)。我只是用这个函数来验证querystring中所有未被验证的值

显然,有更安全、永久和“正确”的方法来修复此问题,但这是快速、简单的,它阻止了所有攻击

示例

当前SQL“从用户中选择lname,fname,其中userid=“&request”(“userid”)

更改为“从t_用户选择lname,fname,其中userid=“&V(请求(“userid”),“int”)

函数V(x,t)
' ====================================================================
'函数将验证传递字符串的数据类型。
例如:
'日期-v([字符串],“日期”)
'整数v([STRING],“Int”)
'电子邮件v([字符串],“电子邮件”)
'字符串长度v([String],25)
' ====================================================================
bFail=0
选择案例ucase(t)
案例“日期”日期
如果不是isDate(x),则bFail=1
大小写为“INT”的整数
如果不是数字(x),则bFail=1
案例“电子邮件”的电子邮件地址
sString=修剪(x)
nIndex=InStr(1,字符串“@”)
nDotIndex=InStrRev(字符串“.”)
如果nIndex<2,则bFail=1
如果nDotIndexnIndex,则bFail=1
如果nDotIndex>Len(sString)-2,则bFail=1
如果len(x)>100,则bFail=1
其他情况
如果是数字(t),则“传递一个整数以测试len”
“长度测试
如果len(x)>t,则bFail=1
如果结束
结束选择
如果失败了,那么
response.redirect(“/error.asp”)”已发送到错误页
其他的
v=x'通过
如果结束
端函数
function V(x,t)
' ====================================================================
' Function will validate the data type of the passed string.
' EXAMPLES:
' Date -            v([STRING],"Date")
' Integer           v([STRING],"Int")
' Email             v([STRING],"Email")
' String Length     v([STRING],25)
' ====================================================================
bFail = 0
SELECT CASE ucase(t)
CASE "DATE" ' Date
    If not isDate(x) then bFail = 1
CASE "INT" ' Integer
    If not isNumeric(x) then bFail = 1
CASE "EMAIL" ' Email Address
    sString = Trim(x)
    nIndex = InStr(1, sString, "@")
    nDotIndex = InStrRev(sString, "." )
    If nIndex < 2 Then bFail = 1
    If nDotIndex < nIndex + 1 Then  bFail = 1
    If InStr( nIndex + 1, sString, "@" ) > nIndex Then bFail = 1
    If nDotIndex > Len( sString ) - 2 Then bFail = 1
    If len(x) > 100 then bFail = 1
CASE ELSE
    if isnumeric(t) then ' Pass a integer to test for len
        ' Test for length
        If len(x) > t then bFail = 1
    end if
END SELECT
if bFail then
          response.redirect("/error.asp") ' Sent to Error page
else
          v=x   ' PASS
end if
end function