dedlfix: HTTP_GET_VARS in Frameset

Beitrag lesen

Hi!

ich prüfe mit php eigentlich nur ob z.B. $page nicht eingegeben wurde und wenn doch wird mit $page und noch nen '.php' daran diese seite aufgerufen

$pg = $_GET["page"];
if($pg != "")
  header('location: ',$pg);
else
  header('location: index1.php');

Eine sehr "schöne" Lücke ist das, denn damit kann man sonstwohin springen lassen. Zum einen ist es nicht notwendig, $_GET["page"] nach $pg umzukopieren. Zum anderen wäre es sinnvoll, vor dem Springen das in $_GET["page"] übergebene gegen eine Liste erlaubter Werte zu prüfen. Obendrein verlangt die Spezifikation, dass beim Location-Header eine vollständige URL anzugeben sei.

// Liste erlaubter Sprungziele  
$destinations = array('foo', 'bar', 'qux', 'index1');  
if (!isset($_GET["page"]) or !in_array($_GET["page"], $destinations))  
  // wenn nicht vorhanden oder nicht erlaubter Wert, dann zwangsweise zur index1 springen  
  $_GET["page"] = 'index1';  
  
header('Location: http://' . $_SERVER['SERVER_NAME'] . '/' . $_GET["page"] . '.php');

Lo!