Hi!
ich überprüfe die URLs unserer Homepage, die durch Aufrufen der einzelnen Seiten gesendet werden, anhand von Mustern, um zu verhindern, dass nicht erlaubte Anweisungen eingeschleust werden:
Was befürchtest du eigentlich? Eingeschleust werden kann nur dann etwas, wenn du Werte unbesehen speicherst oder überträgst. Alles, was einfach nur unbeachtet rumliegt, kann nichts tun. Wenn du die Befürchtung hast, zufällig da draufzutreten, dann ist vielleicht dein Programmierstil mangelhaft, beispielsweise wenn du Variablen vor dem Erstgebrauch nicht definiert initialisierst.
Da ich Einträge in unser Gästebuch nur nach Anklicken eines an die E-Mail-Adresse des Besuchers geschickten Bestätigungslinks freigeben will, muss ich bei meiner Absicherung ein weiteres Muster angeben, das aus dem String "Gaestebuch__Speichern.php?Bestaetigung=angeklickt&Token=" und einem genau 32 Zeichen langen Token besteht. Der Token selbst besteht nur aus Kleinbuchstaben sowie Ziffern.
Beispiel:
Gaestebuch__Speichern.php?Bestaetigung=angeklickt&Token=7802b598cecb40806c3e7249f564b36c
Dann schau dir genau diese beiden Werte im $_GET an. Alles andere ist doch Würstchen, solange du es unbeachtet lässt. Und wenn du die Sicherheitslücke register_globals befürchtest, dann ist es sowieso bereits zu spät, wenn du erst im Script Gegenmaßnahmen ergreifst.
Sicherlich kann ich über folgendes Muster prüfen, ob nur Buchstaben oder Ziffern übergeben wurden, aber wie muss ich das Muster erweitern, um auch gleichzeitig testen zu können, dass der Token aus genau 32 Zeichen besteht?
Egal wie lang der Token ist, du musst nur wissen, ob er in der List der erlaubten Tokens enthalten ist oder nicht.
Lo!