L'injection SQL a été jouée par les soi-disant maîtres des hackers de ces niveaux, et il s'avère que la plupart des intrusions de pirates sont désormais basées sur l'injection SQL. Hé, qui facilite le démarrage ? D'accord, ne disons pas de bêtises, maintenant je. commencer à dire que se passe-t-il si Écrivez un programme général anti-injection SQL. Les requêtes http générales ne sont rien d'autre que get et post, donc tant que nous filtrons tous les caractères illégaux dans la publication ou les informations de paramètres dans la requête get dans le fichier, nous pouvons. jugez en implémentant le filtrage des informations sur les requêtes http. Est-il soumis à une attaque par injection SQL ?
La requête get transmise par IIS à asp.dll se présente sous la forme d'une chaîne lorsque les données sont transmises à Request.QueryString, l'analyseur asp analysera les informations de Request.QueryString, puis séparera le contenu de chaque tableau en fonction. "&" Les données sont interceptées de la manière suivante :
Tout d'abord, nous définissons que la requête ne peut pas contenir les caractères suivants :
'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate |char|declare
each Les caractères sont séparés par "|", puis nous déterminons le Request.QueryString obtenu. Le code spécifique est le suivant :
dim sql_injdata.
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = fractionné(SQL_Injdata,"|")
Si Request.QueryString<>"" Alors
Pour chaque SQL_Get dans Request.QueryString
Pour SQL_Data = 0 vers Ubound (SQL_inj)
si instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Alors
Response.Write "<Script Language=****>alert('World Movie Alliance SQL Universal Anti-injection System Prompt ↓nn Veuillez ne pas inclure de caractères illégaux dans les paramètres et essayer d'injecter !'); history.back(- 1)</ Scénario>"
Réponse.end
finir si
suivant
Suivant
End If
De cette façon, nous avons implémenté l'interception par injection des requêtes get, mais nous devons également filtrer les requêtes de publication, nous devons donc continuer à considérer request.form, qui existe également sous la forme d'un tableau. faire un autre jugement en boucle. Le code est le suivant :
Si Request.Form<>"" Alors
Pour chaque Sql_Post dans Request.Form
Pour SQL_Data = 0 vers Ubound (SQL_inj)
si instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Alors
Response.Write "<Script Language=****>alert('World Movie Alliance SQL invite le système anti-injection universel ↓nn Veuillez ne pas inclure de caractères illégaux dans les paramètres et essayez d'injecter ! nnHTTP://www.521movie. com '); history.back(-1)</Script>"
Réponse.end
finir si
suivant
suivant
terminez si
OK, vous avez terminé. Nous avons implémenté l'interception d'informations pour les requêtes get et post. Il vous suffit de référencer cette page avant d'ouvrir un fichier de base de données tel que conn.asp. Vous pouvez continuer à développer votre programme sans vous soucier de savoir si vous serez à nouveau attaqué par injection SQL. N'est-ce pas ?