smarty get variable - wie sicher / unsicher?

ev0lst

Erfahrenes Mitglied
Hallo.

Jeder der Smarty kennt weiß, dass es sehr einfach ist, dort mit GET und POST Variablen zu arbeiten. Aber wie sicher ist das eigentlich? Durchlaufen diese Variablen noch eine Sicherheitsroutine von Smarty oder werden sie 1:1 übergeben?

Wie kann man GET und POST Variablen am besten validieren, sodass es keine sicherheitsrisiken gibt?

Eine 1:1 injection der GET und POST Vars. in eine SQL Query ist ja eh nicht zu empfehlen. Wie kann ich da am besten vorgehen?

Danke
 
Ich vermute, dass sie unverändert übergeben werden. Daher wirst du dich selbst um die Validierung der Werte kümmern müssen. Welche Validierung dabei angebracht ist, hängt von den erwarteten Werten ab.
 
Es handelt sich lediglich um integer. Bei manchen um einfache varchar textstrings...
Hast Du da eine Lösung?
 
Bei den Integerwerten kannst du prüfen, ob nach einer Typkonvertierung die Werte noch gleich sind:
PHP:
if( $val != (int) $val ) {
	// kein Integerwert
}
Bei den Zeichenketten wird es etwas komplexer. Denn die Validierung ist ja das Bestätigen bestimmter vorgegebener Eigenschaften. Diese können bei Zeichenketten durch vielerlei Kombinationen aus Zeichenmenge, Zeichenkettenlänge, Position einzelner Zeichen, Auftreten bestimmter Zeichensequenzen/-mustern etc. beschrieben werden.
 
Okay, super.

Kann ich eigentlich jedes GET und POST durch so eine prüfung schicken?
Mit einer Prüfung vorrangesetzt...

PHP:
if(is_string($_GET))
{
...
}

Geht sowas?
 
Alle von Außen kommenden Werte sind erst einmal vom Typ String, da das HTTP (und auch andere Protokolle) keine Datentypen kennt. Nur PHP-intern gibt es unterschiedliche Datentypen.
Deine genannte Prüfung wäre also – bis auf dass die vordefinierten Variablen sowieso Arrays sind – sinnlos.
 
Ok, da muss ich dir jetzt echt Recht geben ;)

Wäre denn eine Funktion sinnvoll, wo ich erstmal die einzelnen GET Vars durch jage?
Ich mache mir immer sorgen dass es nie ausreicht und es zu viel Last verursacht...
 
Zurück