Существует крупномасштабная атака, которая ведется с апреля прошлого года, и если это вас заинтересует, вам придется добавить триггер для каждой таблицы в базе данных.
Этот скрипт изменяет исходный код атаки, чтобы очистить все одним махом, предполагая, что <script
не является допустимым текстом где-либо в базе данных:
DECLARE @T varchar(255),@C varchar(255)
DECLARE Table_Cursor CURSOR FOR select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167)
OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C
WHILE(@@FETCH_STATUS=0) BEGIN
exec('update ['+@T+'] set ['+@C+']=LEFT(['+@C+'], CHARINDEX(''<script'', ['+@C+'])-1)
WHERE CHARINDEX(''<script'', ['+@C+']) >0')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor
Кроме того, я слышал, что вам, возможно, удастся остановить атаку, удалив SELECT
разрешений для пользователя приложения на syscolumns
или sysobjects
, если это вариант для вас. Вам все еще нужно исправить свои уязвимости при подготовке к следующей атаке.