Если вы видите в своих таблицах javascript, то это классическая SQL-инъекция. Вам необходимо обновить ASP-страницы, чтобы проверить вводимые данные из строк запросов, прежде чем добавлять в команду SQL.
Что касается текущего состояния БД, вы можете восстановить резервную копию или написать собственные сценарии, чтобы удалить вставленный JavaScript из ваших таблиц.
Я покопался в каком-то старом коде и нашел функцию (ниже), которую я написал для старого сайта, который несколько лет назад подвергся массированной атаке с помощью инъекций. Я просто использовал эту функцию для проверки всех значений из строки запроса, которые не были проверены.
Очевидно, что есть гораздо более безопасный, постоянный и "правильный" способ исправить это, но это было быстро, легко и остановило все атаки.
Пример
Текущий SQL "SELECT lname, fname from t_users, где userid =" & request ("userid")
Изменить на "SELECT lname, fname из t_users, где userid =" & V (request ("userid"), "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