Bei SQL-Injection-Angriffen werden Designschwachstellen ausgenutzt, um SQL-Befehle auf dem Zielserver auszuführen und andere Angriffe durchzuführen, um SQL-Befehle dynamisch zu generieren, ohne die vom Benutzer eingegebenen Daten zu überprüfen. Dies ist der Hauptgrund für den Erfolg von SQL-Injection-Angriffen.
Zum Beispiel:
Wenn Ihre Abfrageanweisung „select * from admin“ lautet, wobei Benutzername=''"&user&"'' und Passwort=''"&pwd&"''" sind.
Also, wenn mein Benutzername ist: 1'' oder ''1''=''1
Dann wird Ihre Abfrageanweisung zu:
Wählen Sie * vom Administrator aus, wobei Benutzername=''1 oder ''1''=''1'' und Passwort=''"&pwd&"'' ist.
Auf diese Weise wird Ihre Abfrageanweisung übergeben und Sie können Ihre Verwaltungsschnittstelle aufrufen.
Daher müssen Benutzereingaben bei der Ergreifung von Vorsichtsmaßnahmen überprüft werden. Konvertieren oder filtern Sie einige Sonderzeichen, z. B. einfache Anführungszeichen, doppelte Anführungszeichen, Semikolons, Kommas, Doppelpunkte, Verbindungsnummern usw.
Die Sonderzeichen und Zeichenfolgen, die gefiltert werden müssen, sind:
Netzbenutzer
xp_cmdshell
/hinzufügen
exec master.dbo.xp_cmdshell
net-Localgroup-Administratoren
wählen
zählen
Aufstieg
verkohlen
Mitte
''
:
"
einfügen
löschen aus
Drop-Tisch
aktualisieren
kürzen
aus
%
Im Folgenden finden Sie zwei Präventionscodes, die ich zur Lösung von Injektionsangriffen als Referenz geschrieben habe!
js-Version des Codes zur Verhinderung von SQL-Injection-Angriffen:
<script language="****">
<!--
var url = location.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);
if(e) {
alarm("Die Adresse enthält illegale Zeichen~");
location.href="error.asp";
}
//-->
<Skript>
[CODE ENDE]
ASP-Version des Codes zur Verhinderung von SQL-Injection-Angriffen ~:
[CODE START]
<%
Bei Fehler Weiter fortsetzen
Dim strTemp
If LCase(Request.ServerVariables("HTTPS")) = "off" Then
strTemp = "http://"
Anders
strTemp = "https://"
End If
strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
If Request.ServerVariables("SERVER_PORT") <> 80 Then strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")
strTemp = strTemp & Request.ServerVariables("URL")
If Trim(Request.QueryString) <> "" Then strTemp = strTemp & "?" & Trim(Request.QueryString)
strTemp = LCase(strTemp)
If Instr(strTemp,"select%20") oder Instr(strTemp,"insert%20") oder Instr(strTemp, "delete%20from") oder Instr(strTemp,"count(") oder Instr(strTemp,"drop%20table") oder Instr(strTemp,"update%20") oder Instr(strTemp,"truncate%20") oder Instr(strTemp,"asc(") oder Instr(strTemp,"mid(") oder Instr(strTemp,"char(") oder Instr(strTemp,"xp_cmdshell") oder Instr(strTemp,"exec%20master") oder Instr(strTemp,"net%20localgroup%20administrators") oder Instr(strTemp,":") oder Instr(strTemp,"net%20user") oder Instr(strTemp,"''") oder Instr(strTemp,"%20or %20") dann
Response.Write „<script language=''****''>“
Response.Write "alert(''Ungültige Adresse!!'');"
Response.Write "location.href=''error.asp';"
Response.Write „<script>“
Ende wenn
%>
Im Folgenden sind relativ einfache Präventionsmethoden aufgeführt, mit denen jeder vertraut ist. Ich habe sie gerade erneut veröffentlicht. Ich hoffe, ich kann dir etwas helfen~
Hauptsächlich für die Übertragung numerischer Variablen:
id = Request.QueryString("id")
Wenn nicht (isNumeric (id)) dann
Response.Write „Ungültige Adresse~“
Antwort.Ende
Ende wenn