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 les caractères suivants ne peuvent pas être inclus dans la requête :
|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare
Chaque caractère est séparé 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
Fin si
De cette façon, nous avons implémenté l'interception par injection des requêtes get, mais nous devons encore filtrer les requêtes de publication, nous devons donc continuer à considérer request.form, qui existe également sous la forme d'un tableau. Il suffit d'en créer 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 Universal Anti-injection System Prompt ↓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
finir si
D'accord, 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 ?