Comment gérer le cheval de Troie accroché à la base de données du site Web ASP
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 j'ai géré 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.
« 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 le contenu du cheval de Troie JS ici',''))
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.Write exécuté avec succès
%>
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
Si rstSchema(TABLE_TYPE)=TABLE Alors
Ajoutez de manière appropriée la plage de valeurs k, telles que :
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 :
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