我的网站遭到一些恶意脚本/标题脚本src = http:// google-stats46.info/ur.php的攻击。此脚本会自动附加到某个表的任何列。我删除了这个脚本。但几个小时后,它又重新出现在一些表格中。但这一次是/ title script src = http:// google-stats45.info/ur.php 这已经发生一周了。我不知道怎么可能。 请给我解决方案
答案 0 :(得分:2)
更改数据库连接的用户名并传递。也许这是一个简单的用户和传递,并且脚本已经建立了它们。
答案 1 :(得分:2)
检查您的网站(或连接到使用此数据库的互联网的任何其他端点)进行SQL Injection攻击。
答案 2 :(得分:1)
在IIS日志中查找术语CAST(
以尝试查找SQL注入尝试。
答案 3 :(得分:0)
do this,如果脚本再次存在,那么更新问题,可能只是一个简单的用户/密码问题,可以通过这种方式解决...如果没有,也许你的网站的URL可能在这里有人可以寻找安全漏洞:)
答案 4 :(得分:0)
如果您在表中看到javascript,那么它就是Classic SQL注入攻击。在附加到SQL命令之前,您需要更新ASP页面以验证来自查询字符串的输入。
对于数据库的当前状态,您可以还原到备份或编写自定义脚本以清除表中插入的javascript。
我挖了一些旧代码并找到了一个函数(下面),我写了一个旧网站,几年前被一次注入攻击大量击中。我刚刚使用此函数来验证查询字符串中未验证的所有值。
显然有更安全,永久和“正确”的方法来解决这个问题,但这很快,很容易,并且可以阻止所有攻击。
示例强>
当前SQL“SELECT lname,来自t_users的fname,其中userid =”&请求( “用户id”)
更改为“SELECT lname,fname from t_users where userid =”& V(请求( “用户id”), “INT”)
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