Sicherheit in PHP

Da es sich eindeutig um eine Zahl handelt (bzw. handeln soll) kannst du statt:

PHP:
htmlspecialchars(mysql_real_escape_string($get))

auch

PHP:
intval($get)

benutzen.

Sollten HTML Zeichen drin sein, würde ja deine erste Prüfung bereits false melden, da es dann kein numerischer String mehr ist.

hmm ok :) danke, aber auch wenn es ../../../etc/passwd als getvariable eingegeben wäre?
 
Wenn dieser Inhalt bei deinem Script reingeht, meldet er einen Fehler, da es kein numerische r String ist.

Selbst wenn er durchkommen würde, würde [phpf]intval[/phpf] daraus eine 0 machen.

Wenn es jetzt um andere Variablen geht (z. B. einen include) würde ich diese auch nur in einem [phpf]Switch[/phpf] benutzen. So kannst du vorgegebene Fälle eintragen, alle anderen werden auf default weitergeleitetet.

Ansonsten sollte der PHP Safe Mode bei solchen Pfäden eingreifen und eben genau soetwas verhindern.
 
Hallo,

ich habe mal eine Frage:
Und zwar verwende ich vor dem Einfuegen einer Variable in die Query einer DB-Abfrage die Funktion strip_tags()
PHP:
$var = strip_tags($_GET['var']);

Ist das ein ausreichender Schutz vor SQL-Injections?
Oder ist es viel besser eine solche Funktion (siehe unten), wie vorher in diesem Thread schon erwähnt, zu nutzen:
PHP:
// Variablen absichern
function quote_smart($value)
{
   // Ueberfluessige Maskierungen entfernen
   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }
   // In Anfuehrungszeichen setzen, sofern keine Zahl
   // oder ein numerischer String vorliegt
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}

Wahrscheinlich ist es schon besser diese Funktion zu nutzen.
Oder reicht eigentlich die strip_tags()-Funktion aus um einen vernuenftigen Schutz zu schaffen?
Danke schonmal!
 
strip_tags() bietet keinerlei Schutz vor SQL-Injections. Vor XSS (Cross-Site-Scripting) schon eher, aber nicht vor SQL-Injections. Dafuer gibt es Funktionen wie z.B. mysql_real_escape_string().
 
Ich möchte noch einmal darauf hinweisen, dass dieser Thread nicht für Fragen sondern für Antworten gedacht ist.
Wofuer ist dieser Thread nicht gedacht:
  • Fragen ob ein Script sicher ist
    Wir wollen hier eher allgemein zum Thema Sicherheit in PHP diskutieren und nicht auf spezielle Scripts eingehen. Natuerlich wollen wir hier auch Code-Beispiele sehen, aber eben nicht, dass jemand sein Script (oder einen Ausschnitt) postet und fragt ob der Code sicher ist.
 
Ich möchte noch einmal darauf hinweisen, dass dieser Thread nicht für Fragen sondern für Antworten gedacht ist.

Ich denke aber, dass ohne Fragen auch keine Antworten gegeben werden können.
Schließlich soll der Thread ja helfen auf dem Gebiet der Sicherheit etwas dazu zu lernen. Ich habe ja auch nicht mein Script gepostet, sondern eine recht grundelegende Frage zu zwei Funktionen gestellt.
Aber das nächste Mal öffne ich auch gern einen eigenen Thread dafür.:)
 
Zurück