Ich glaube, viele Leute haben schon erlebt, dass die Datenbank gehackt wurde. Hier werde ich darüber sprechen, wie ich damit umgehe.
Schritt eins: Erstellen Sie ein Backup Ihrer vorhandenen Datenbank.
Schritt zwei:
Führen Sie die folgende ASP-Datei aus, um den JS-Trojaner aus der Datenbank zu entfernen:
Hinweis: Ich habe conn.asp selbst geschrieben.
Programmcode
„Fügen Sie den JS-Trojaner-Inhalt hier ein: Bitte denken Sie daran, ihn in den JS-Trojaner-Inhalt in Ihrer Datenbank zu ändern.“
<!--#include file="conn.asp"-->
<%
Server.ScriptTimeOut=180
Setze rstSchema = conn.OpenSchema(20)
k=1
Tun Sie dies, bis rstSchema.EOF 'die Datenbanktabelle durchläuft
Wenn rstSchema("TABLE_TYPE")="TABLE" Dann
Response.write K&".<font color=red><b>"&rstSchema("TABLE_NAME") & "</b></font>:" 'Tabellennamen anzeigen
Setze rs=Server.CreateObject("ADODB.Recordset")
sql="select * from [" & rstSchema("TABLE_NAME")&"]"
rs.open sql,conn,1,3
For i=0 to rs.fields.count-1 'Durchläuft die Felder in der Tabelle
Wenn int(rs(i).Type)=129 oder int(rs(i).Type)=130 oder int(rs(i).Type)=200 oder int(rs(i).Type)=201 oder int (rs(i).Type)=202 oder int(rs(i).Type)=203 Dann werden nur Felder verarbeitet, deren Feldtyp der Zeichentyp ist
conn.execute("update ["&rstSchema("TABLE_NAME")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" as varchar(8000)),'Setzen Sie hier JS ein Trojanischer Inhalt','')")
Response.write rs(i).name &" "&rs(i).Type &" "'Zeigt den Namen des ausgeführten Feldes an.
Ende wenn
Nächste
Response.write „<br>“
Ende wenn
rstSchema.MoveNext
k=k+1
Schleife
Antwort.Write „Ausführung erfolgreich“
%>
Wenn viele Datenbanktabellen vorhanden sind, wird die oben beschriebene Durchquerung der Datenbankstruktur von IIS gestoppt, bevor sie abgeschlossen ist. Zu diesem Zeitpunkt können Sie
Programmcode
Wenn rstSchema("TABLE_TYPE")="TABLE" Dann
Fügen Sie den Bereich der k-Werte entsprechend hinzu, z. B.:
Programmcode
Wenn rstSchema("TABLE_TYPE")="TABLE" k>10 und k<20 Dann
In diesem Fall werden jeweils nur 9 Tische bedient.
Schritt drei:
Gemäß den Merkmalen der Datenbank-JS-Injection (die Zeichen wie <script, </script> und http:// umfasst),
Fügen Sie den folgenden Code in conn.asp ein:
Programmcode
Funktion Cheack_Sqljs()'Verhindert die JS-Injektion von externen Links in der Datenbank: „true“ zeigt an, dass die JS-Injection von externen Links entdeckt wurde.
Dimmen Sie F_Post,F_Get
Cheack_Sqljs=Falsch
If Request.Form<>"" Then' Erkennung, wenn das Formular gesendet wird
Für jeden F_Post in Request.Form
If (Instr(LCase(Request.Form(F_Post)),"<script")<>0 or Instr(LCase(Request.Form(F_Post)),"</script>")<>0) und Instr(LCase (Request.Form(F_Post))," http://")<>0 Dann
Check_Sqljs=True
Ausgang für
Ende wenn
Nächste
Ende wenn
Wenn Request.QueryString<>"" Then'QueryString-Erkennung bei der Übermittlung
Für jedes F_Get in Request.QueryString
If (Instr(LCase(Request.Form(F_Get)),"<script")<>0 or Instr(LCase(Request.Form(F_Get)),"</script>")<>0) und Instr(LCase (Request.Form(F_Get))," http://")<>0 Dann
Check_Sqljs=True
Ausgang für
Ende wenn
Nächste
Ende wenn
Funktion beenden
Funktion CheckDataFrom()'Überprüfen Sie die Quelle der übermittelten Daten: True bedeutet, dass die Daten von außerhalb der Site übermittelt werden
CheckDataFrom=True
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 dann
CheckDataFrom=False
Ende wenn
Funktion beenden
Wenn Cheack_Sqljs oder CheckDataFrom, dann
Response.Write "<Script Language=JavaScript>alert('Ausführung verboten, illegaler Vorgang.');</Script>"
Response.End()
Ende wenn