2009-05-19 4 views
-1

Mögliche Duplizieren:
Best way to stop SQL Injection in PHPDer beste Weg, um POST/GET-Variablen von einem Formular/URL zu bereinigen?

Ich erstelle eine Website mit PHP, die Verwendung einer MySQL-Datenbank macht und Griffe Formen und Variablen aus der URL. Die Variablen werden verwendet, um SQL-Abfragezeichenfolgen dynamisch zu erstellen. Also brauche ich eine robuste Lösung, um sicherzustellen, dass niemand eine SQL-Injektion versucht, etc .. Ein Freund von mir hat gesagt, dass ich eigentlich nur gespeicherte Prozeduren verwenden sollte, aber das ist nicht wirklich machbar, weil der Host ich nicht benutze erlaube diese nicht.

Hier ist der Code ich verwende (es Teil einer Klasse ist DB Befehle zu wickeln):

... 
public function Sanitize($Variable) 
{ 
    if(is_resource($this->ServerConnection)) 
    { 
     $Variable = str_replace(";", "", $Variable); 
     if(get_magic_quotes_gpc()) 
     { 
      if(ini_get('magic_quotes_sybase')) 
      { 
       $Variable = str_replace("''", "'", $Variable); 
      } 
      else 
      { 
       $Variable = stripslashes($Variable); 
      } 
     } 
     return mysql_real_escape_string($Variable, $this->ServerConnection); 
    } 
    else 
    { 
     $this->PrintError("The Sanitize function is not available as there is no server connection."); 
    } 
} 
... 

Ist diese Funktion robust genug? Sollte ich etwas anderes tun?

+1

Warum verwenden Sie keine parametrisierte Abfrage? – dave4420

+0

Was sind parametrisierte Abfragen und was sind die Vorteile? Vielleicht sollte ich klarstellen, dass ich die SQL Datenbank nicht sehr lange online benutzt habe. –

+1

Check out PDO, wenn Sie parametrisierte Abfragen durchführen möchten. http://php.net/pdo – rojoca

Antwort

1

Was der beste Weg, ist ...

Es gibt keinen besten Weg. Es hängt vom Kontext ab.

.. Desinfizieren POST/GET-Variablen aus ..

Es ist eine fehlerhafte Denkweise, dass die Daten gut sind oder schlecht ist. Daten sind nur Daten. Es ist der Kontext, in dem es verwendet wird, der es böswillig macht oder nicht. Einige Wörter können schlecht sein, wenn Sie sie auf einem Datenbankserver ungeschminkt ausführen. Einige Wörter sind schlecht, wenn Sie sie Minderjährigen anzeigen. Es geht um den Kontext.

Verwandte Themen