Je pense que de nombreuses personnes ont été confrontées à un piratage de la base de données. Ici, je vais parler de la façon dont je gère cela.
Première étape : effectuez une sauvegarde de votre base de données existante.
Deuxième étape :
Exécutez le fichier ASP suivant pour supprimer le cheval de Troie JS de la base de données :
Remarque : j'ai écrit conn.asp moi-même.
code de programme
« Mettez le contenu du cheval de Troie JS ici : n'oubliez pas de le remplacer par le contenu du cheval de Troie JS dans votre base de données.
<!--#include file="conn.asp"-->
<%
Serveur.ScriptTimeOut=180
Définir rstSchema = conn.OpenSchema(20)
k=1
Faire jusqu'à ce que rstSchema.EOF 'Parcoure la table de la base de données
Si rstSchema("TABLE_TYPE")="TABLE" Alors
réponse.write K&".<font color=red><b>"&rstSchema("TABLE_NAME") & "</b></font>:" 'Afficher le nom de la table
Définir rs=Server.CreateObject("ADODB.Recordset")
sql="select * from [" & rstSchema("TABLE_NAME")&"]"
rs.open sql, conn, 1,3
Pour i=0 à rs.fields.count-1 'Parcourir les champs du tableau
Si int(rs(i).Type)=129 ou int(rs(i).Type)=130 ou int(rs(i).Type)=200 ou int(rs(i).Type)=201 ou int (rs(i).Type)=202 ou int(rs(i).Type)=203 Then' traite uniquement les champs dont le type de champ est de type caractère
conn.execute("update ["&rstSchema("TABLE_NAME")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" as varchar(8000)),'Mettez ici JS Contenu de cheval de Troie','')")
réponse.write rs(i).name &" "&rs(i).Type &" "'Affiche le nom du champ exécuté.
Fin si
Suivant
réponse.écrire "<br>"
Fin si
rstSchema.MoveNext
k=k+1
Boucle
réponse.Écrivez "Exécution réussie"
%>
S'il existe de nombreuses tables de base de données, le parcours ci-dessus de la structure de la base de données sera arrêté par IIS avant d'être terminé. A ce moment, vous pouvez
code de programme
Si rstSchema("TABLE_TYPE")="TABLE" Alors
Ajoutez de manière appropriée la plage de valeurs k, telles que :
code de programme
Si rstSchema("TABLE_TYPE")="TABLE" k>10 et k<20 Alors
Dans ce cas, seules 9 tables seront exploitées à la fois.
Troisième étape :
Selon les caractéristiques de l'injection JS de la base de données (qui inclura des caractères tels que <script, </script> et http://),
Mettez le code suivant dans conn.asp :
code de programme
Fonction Cheack_Sqljs()'Empêche l'injection JS à partir de liens externes dans la base de données : true indique que l'injection JS à partir de liens externes est découverte.
Dim F_Post, F_Get
Cheack_Sqljs=Faux
If Request.Form<>"" Then' Détection lors de la soumission du formulaire
Pour chaque F_Post dans Request.Form
Si (Instr(LCase(Request.Form(F_Post)),"<script")<>0 ou Instr(LCase(Request.Form(F_Post)),"</script>")<>0) et Instr(LCase (Request.Form(F_Post))," http://")<>0 Puis
Check_Sqljs=Vrai
Quitter pour
Fin si
Suivant
Fin si
If Request.QueryString<>"" Then'QueryString détection lors de la soumission
Pour chaque F_Get dans Request.QueryString
Si (Instr(LCase(Request.Form(F_Get)),"<script")<>0 ou Instr(LCase(Request.Form(F_Get)),"</script>")<>0) et Instr(LCase (Request.Form(F_Get))," http://")<>0 Puis
Check_Sqljs=Vrai
Quitter pour
Fin si
Suivant
Fin si
Fonction de fin
Fonction CheckDataFrom()'Vérifiez la source des données soumises : True signifie que les données sont soumises depuis l'extérieur du site
CheckDataFrom=Vrai
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
si mid(server_v1,8,len(server_v2))<>server_v2 alors
CheckDataFrom=Faux
finir si
Fonction de fin
Si Cheack_Sqljs ou CheckDataFrom Alors
Response.Write "<Script Language=JavaScript>alert('Exécution interdite, opération illégale.');</Script>"
Réponse.Fin()
Fin si