Wie SQL-Injektionen zu blockieren

September 14

SQL-Injection ist eine Form der Netzwerkangriff, bei der "Injektion" Code in einer Datenbank in einem Versuch, die Datenbank-Abfrage-Programm einen Fehler zurück und geben dem Injektor, einige Informationen über die Datenbank und die Informationen darin zu erzwingen. Es kann von jeder Webseite, die fungiert als ein Portal zu einer unsicheren Datenbank und nicht Desinfizieren Sie ihre Abfragen durchgeführt werden.

Anweisungen

1 Stellen Sie sicher, dass Sie den Typ der Eingabe erforderlich, beim Schreiben von SQL-Abfragecode angeben. Die meisten Entwicklungsumgebungen können Sie "Text", "Integer" oder "Datum" angeben. Z. B. die URL

http://mysite.com/listauthordetails.aspx?user_id=1234

wird von der Datenbank als interpretiert

Wählen Sie First_name, Last_name FROM Benutzer WHERE User_id = '1234'

Diese Abfrage kann umgeschrieben werden zu

Dim ID as String = Request.QueryString("ID")

Dim Cmd als neue SqlCommand ("SELECT User_id FROM Benutzer WHERE User_id = @user_id")

Dim Param = neuen SqlParameter ("User_id", SqlDbType.VarChar)

Param. Wert = ID

cmd. Parameters.Add(param)

Dieser Code verhindert Zusatzinformationen aus der SQL-Abfrage angehängt wird, und nur das Ergebnis der Anforderung User_id übergibt.

2 Verwenden Sie die .htaccess-Datei, um uneheliche Anfragen zu blockieren, bevor sie an der Datenbank mit den RewriteCond()-Befehl übergeben werden. Um ein Skript versucht, eine Anforderungsvariable ändern zu blockieren, z. B. die Zeile "RewriteCond % {QUERY_STRING} _REQUEST (= | [| \%[0-9a-Z]{0,2}) "in der .htaccess-Datei.

3 Testen Sie Ihre SQL-Abfrage-Code vor Inbetriebnahme live im Web. Dies ist wahrscheinlich die wichtigste Sache, die Sie tun können, die und getan werden kann, jedes Mal, wenn Sie Ihre Website aktualisieren.