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