Les attaques par injection SQL font référence à l'exploitation des vulnérabilités de conception pour exécuter des commandes SQL sur le serveur cible et effectuer d'autres attaques pour générer dynamiquement des commandes SQL sans vérifier les données saisies par l'utilisateur. C'est la principale raison pour laquelle les attaques par injection SQL réussissent.
Par exemple:
Si votre instruction de requête est sélectionnez * from admin où username=''"&user&"'' et password=''"&pwd&"''"
Donc, si mon nom d'utilisateur est : 1'' ou ''1''=''1
Ensuite, votre instruction de requête deviendra :
sélectionnez * depuis l'administrateur où username=''1 ou ''1''=''1'' et password=''"&pwd&"''"
De cette façon, votre instruction de requête passera et vous pourrez accéder à votre interface de gestion.
Par conséquent, les entrées de l’utilisateur doivent être vérifiées lors de la prise de précautions. Convertissez ou filtrez certains caractères spéciaux, tels que les guillemets simples, les guillemets doubles, les points-virgules, les virgules, les deux-points, les numéros de connexion, etc.
Les caractères spéciaux et les chaînes qui doivent être filtrés sont :
utilisateur net
xp_cmdshell
/ajouter
exécutable master.dbo.xp_cmdshell
administrateurs de groupes locaux nets
sélectionner
compter
Asc.
carboniser
milieu
''
:
"
insérer
supprimer de
déposer une table
mise à jour
tronquer
depuis
%
Voici deux codes de prévention que j'ai écrits sur la résolution des attaques par injection pour votre référence !
js du code pour empêcher les attaques par injection SQL :
<langage de script="****">
<!--
var url = emplacement.search;
var re=/^?(.*)(select%20|insert%20|delete%20from%20|count(|drop%20table|update%20truncate%20|asc(|mid(|char (|xp_cmdshell|exec%20master|net%20localgroup%20administrators|"|../../image/bbs3000/whatchutalkingabout_smile.gifnet%20user|''|%20or%20)(.*)$/gi;
var e = re.test(url);
si(e) {
alert("L'adresse contient des caractères illégaux~");
location.href="erreur.asp";
}
//-->
<script>
[FIN DU CODE]
Version ASP du code pour empêcher les attaques par injection SQL~ :
[DEBUT DE CODE]
<%
En cas d'erreur, reprendre ensuite
Dim strTemp
Si LCase(Request.ServerVariables("HTTPS")) = "off" Alors
strTemp = "http://"
Autre
strTemp = "https://"
Fin si
strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
Si Request.ServerVariables("SERVER_PORT") <> 80 Alors strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")
strTemp = strTemp & Request.ServerVariables("URL")
Si Trim(Request.QueryString) <> "" Alors strTemp = strTemp & "?" & Trim(Request.QueryString)
strTemp = LCase(strTemp)
Si Instr(strTemp,"select%20") ou Instr(strTemp,"insert%20") ou Instr(strTemp, "delete%20from") ou Instr(strTemp,"count(") ou Instr(strTemp,"drop%20table") ou Instr(strTemp,"update%20") ou Instr(strTemp,"truncate%20") ou Instr(strTemp,"asc(") ou Instr(strTemp,"mid(") ou Instr(strTemp,"char(") ou Instr(strTemp,"xp_cmdshell") ou Instr(strTemp,"exec%20master") ou Instr(strTemp,"net%20localgroup%20administrators") ou Instr(strTemp,":") ou Instr(strTemp,"net%20user") ou Instr(strTemp,"''") ou Instr(strTemp,"%20ou %20") alors
Réponse.Écrivez "<script language=''****''>"
Réponse.Écrivez "alert(''Adresse illégale !!'');"
Réponse.Écrivez "location.href=''error.asp'';"
Réponse.Écrivez "<script>"
Fin si
%>
Les méthodes de prévention suivantes sont relativement simples. Ce sont des méthodes que tout le monde connaît. Je viens de les republier. J'espère pouvoir vous aider ~
Principalement pour le transfert de variables numériques :
identifiant = Request.QueryString("id")
Si non (isNumeric (id)) alors
Réponse. Écrivez « Adresse illégale ~ »
Réponse.Fin
Fin si