[Php-it] problema con sessioni e query_string...

Alessandro Marinuzzi alecosnet at inwind.it
Fri May 4 17:28:03 CEST 2007


Ciao a tutti! Ho uno script che nell'url genera delle variabili che poi
vengono lette con $_SERVER['QUERY_STRING']. Il problema è che una di
queste variabili è la pagina di destinazione dello script:

send.php?lang=it&page=../infos.php


in pratica alla fine lo script andrà a mostrare ../infos.php che è
contenuto in una form finale:

<FORM METHOD="GET" ACTION="<?php echo stripslashes(base64_decode($path));
?>" TARGET="<?php echo $mode; ?>">
  <INPUT TYPE="submit" NAME="submit" VALUE="<?php echo
htmlentities($formstop, ENT_QUOTES); ?>">
</FORM>

dove:

$path = $page;


ora io vorrei evitare di mostrare questa informazione perchè può essere
sostituita con codice maligno:

esempio:

send.php?lang=it&page=possibile hacking

In pratica avevo tentato di superare il problema facendo:

  if ((isset($page)) || (!empty($page))) {
    $path = stripslashes($page);
  }
  if ((!isset($path)) || (empty($path))) {
    $path = "http://$host";
  }
  if ((!isset($_SESSION['page'])) || (empty($_SESSION['page']))) {
    $_SESSION['page'] = $page;
    $path = $_SESSION['page'];
  } else {
    $path = $_SESSION['page'];
  }
  $path = base64_encode($path);

o qualcosa del genere ma il problema è che così non mi permette di
cambiare il valore di page visto che non posso distruggere la sessione...
spero di essere stato chiaro... cosa posso fare oltre ad avere messo in
cima allo script ini_set('register_globals' 0) per evitare problemi di
sicurezza?

-- 
Alessandro Marinuzzi
--------------------
http://www.alecos.it
--------------------


More information about the Php-it mailing list