SQL-Injection wurde von den sogenannten Hacker-Meistern dieser Level gespielt, und es hat sich herausgestellt, dass die meisten Hackereingriffe jetzt auf SQL-Injection basieren. Hey, wer macht es einfach, damit anzufangen? Okay, jetzt reden wir keinen Unsinn Beginnen Sie mit der Frage, was passiert, wenn Sie ein allgemeines SQL-Anti-Injection-Programm schreiben. Allgemeine HTTP-Anfragen sind nichts anderes als Get und Post. Solange wir also alle illegalen Zeichen im Post oder Parameterinformationen in der Get-Anfrage in der Datei filtern, können wir das tun Beurteilen Sie, indem Sie die HTTP-Anforderungsinformationsfilterung implementieren. Ist es einem SQL-Injection-Angriff ausgesetzt?
Die von IIS an asp.dll übergebene Get-Anfrage liegt in Form einer Zeichenfolge vor. Wenn die Daten an Request.QueryString übergeben werden, analysiert der ASP-Parser die Informationen von Request.QueryString und trennt dann den Inhalt jedes Arrays entsprechend „&“ Die Daten werden wie folgt abgefangen:
Zunächst definieren wir, dass die folgenden Zeichen nicht in der Anfrage enthalten sein dürfen:
|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare
Jedes Zeichen wird durch „|“ getrennt, und dann ermitteln wir den erhaltenen Request.QueryString. Der spezifische Code lautet wie folgt:
dim sql_injdata
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
Wenn Request.QueryString<>"" Dann
Für jedes SQL_Get in Request.QueryString
Für SQL_Data=0 bis Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Dann
Response.Write "<Script Language=****>alert('World Movie Alliance SQL Universal Anti-injection System Prompt ↓nn Bitte schließen Sie keine illegalen Zeichen in die Parameter ein und versuchen Sie zu injizieren!'); History.back(- 1)</ Skript>"
Antwort.Ende
Ende wenn
nächste
Nächste
Ende wenn
Auf diese Weise haben wir das Abfangen von Get-Anfragen durch Injektion implementiert, müssen jedoch weiterhin Post-Anfragen filtern, sodass wir weiterhin request.form berücksichtigen müssen, das ebenfalls in Form eines Arrays vorhanden ist. Wir müssen nur ein anderes erstellen Schleifenurteil. Der Code lautet wie folgt:
If Request.Form<>"" Then
Für jeden Sql_Post in Request.Form
Für SQL_Data=0 bis Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Dann
Response.Write "<Script Language=****>alert('World Movie Alliance SQL Universal Anti-injection System Prompt ↓nn Bitte schließen Sie keine illegalen Zeichen in die Parameter ein und versuchen Sie zu injizieren! nnHTTP: //www.521movie. com ');history.back(-1)</Script>"
Antwort.Ende
Ende wenn
nächste
nächste
Ende wenn
Okay, Sie sind fertig. Wir haben das Abfangen von Informationen für Get- und Post-Anfragen implementiert. Sie müssen nur auf diese Seite verweisen, bevor Sie eine Datenbankdatei wie conn.asp öffnen. Sie können Ihr Programm weiterentwickeln, ohne befürchten zu müssen, dass Sie erneut von SQL-Injection angegriffen werden. Nicht wahr?