powie.de Tech Forum

PHP und Webdesign => Security => Thema gestartet von: k00ni am 11. März 2007, 13:14:16

Titel: Checken der Eingaben in die Datenbank
Beitrag von: k00ni am 11. März 2007, 13:14:16
Hallo,
was sollte man alles für Funktionen über eine Variable rutschen lassen, welche in einem SQL-Query verwendet wird.
Folgendes habe ich mir bereits überlegt:
- html blocken
- SQL-Sonderzeichen, wie einfache und doppelte Anführungsstriche, Semikolon blocken
- Wörter wie SELECT, FROM, WHERE und das \"=\" blocken
Sollte eine Variable diese enthalten bricht entweder die Routine ab oder die Zeichen werden auskommentiert.
Gedanken dazu? Was kann man noch einbauen? Gibt es sowas bereits als Implementierung in einem der pScripte?
Titel: Checken der Eingaben in die Datenbank
Beitrag von: k00ni am 11. März 2007, 14:43:35
So habe aus einem alten Skript von mir folgende Funktion ausgekramt
 

function  check_variable_status ($variable_contents)
{  
$break = false;
for ($i=0; $i{
    if (strpos ($variable_contents [$i], \"\\\"\") OR
        strpos ($variable_contents [$i], \"\'\") OR
        strpos ($variable_contents [$i], \"=\") OR
        strpos ($variable_contents [$i], \"<\") OR
        strpos ($variable_contents [$i], \",\") OR
        strpos ($variable_contents [$i], \";\"))
   {
          $break = true;
          break;                
   }
}
return $break;    
}

 
 
Sie erkennt sowohl HTML-Tags, als auch SQL-Statements.
Titel: Checken der Eingaben in die Datenbank
Beitrag von: mahe am 11. März 2007, 15:00:11
http://de.php.net/manual/de/function.mysql-escape-string.php
http://de.php.net/manual/de/function.mysql-real-escape-string.php
http://de.php.net/manual/de/function.mysqli-escape-string.php
http://de.php.net/manual/de/function.mysqli-real-escape-string.php
Was brauchts mehr?
HTML bei der Ausgabe:
http://de.php.net/manual/de/function.htmlspecialchars.php
http://de.php.net/manual/de/function.htmlentities.php
Titel: Checken der Eingaben in die Datenbank
Beitrag von: k00ni am 11. März 2007, 15:26:38
Danke, statt zu blocken, maskiert man einfach, auch nicht schlecht. Hab zu lange C# gemacht, kenne fast keine PHP-Funktionen mehr  :ugly: