PROZONE powered by Tophost
  Home   Forum   Regolamento Help Login Registrati   *
Statistiche
Utenti
Utenti Totali: 1707
Ultimo utente: xal
Statistiche
Posts Totali: 29470
Topics Totali: 3404
Online Oggi: 51
Presenze Massime Online: 559
(23 Luglio 2008, 14:24:28)
Utenti Online
Utenti: 0
Visitatori: 54
Totale: 54
Siti amici
Design & Multimedia

Dire e Fare il blog che ti aiuta

Wordpress
Pagine: [1] 2
 
Autore Topic: Register_globals_off  (Letto 12204 volte)
Tophost
Moderatore
*
Posts: 970


Register_globals_off
« il: 5 Marzo 2005, 10:50:11 »

Nei nostri spazi è attivo il settaggio di default REGISTER_GLOBALS_OFF, quando invece di solito questa impostazione viene lasciata in ON.

Perchè anche in questo settaggio siete diversi?
Questo perchè ci teniamo alla sicurezza e programmare con REGISTER_GLOBALS_ON è pericoloso, permette le intrusioni in modo più facile, è deprecato sin dal PHP 4.2.0 e dal PHP 5 in diventerà il modo di lavorare standard.

Cosa comporta lavorare con REGISTER_GLOBALS_OFF?
Comporta che le variabili speciali come ad esempio quelle di SESSIONE o di moduli inviati via POST o GET non possono essere richiamate direttamente, ma devono essere richiamate con la loro particolare sintassi. Questo comporta maggiore sicurezza.
Esempio pratico. Abbiamo un modulo dove inviamo via POST i campi per un'elaborazione "form to mail" ed è presente il campo "nome". Ebbene questo campo non potrà essere richiamato semplicemente con $nome, ma con $_POST["nome"], perchè essendo disattivata la direttiva REGISTER_GLOBALS non ci sarà l'assegnazione automatica di qualsiasi variabile speciale nella forma semplificata.

Spiegazioni dettagliate su tale direttiva e la sicurezza che comporta le trovate a questi indirizzi:
http://it.php.net/manual/it/security.globals.php
http://it.php.net/register_globals

Ho installato OSCommerce che esige REGISTER_GLOBALS_ON!
Le prossime versioni di tale softare saranno compatibili con register globals off e comunque esiste una patch per far si che le versioni attuali di tale software girino anche con REGISTER_GLOBALS_OFF.
http://www.oscommerce.com/community/contributions,2097

Potete settare REGISTER_GLOBALS_ON solo per il mio spazio?
Si, lo sconsigliamo, ma lo possiamo fare solo in caso di motivato bisogno. Ci sono stati anche diversi utenti che ci hanno ringraziato per questa direttiva, perchè è stato uno sprone che li ha motivati a rendere il loro script compatibile con questo modo di programmare consigliato e più sicuro!
Incoraggiamo tutti gli utenti a rendere compatibili i propri script con REGISTER_GLOBALS_OFF perchè ne va della loro sicurezza e comunque si preparano sin da subito per il PHP 5.
« Ultima modifica: 30 Marzo 2005, 10:18:27 da Volverine » Loggato
futre
Utente
***
Posts: 47


Register_globals_off
« Risposta #1 il: 5 Marzo 2005, 11:27:38 »

mi permetto di aggiungere un piccolo consiglio, alcuni server utilizzano ancora il register_globals_on, per comodità qualcuno utilizza lo stesso metodo anche sul proprio pc, così quando si vanno a trasferire file non funziona più nulla, lavorare con la nuova sintassi è ormai un obbligo, su google è facile trovare alcuni trucchi per non modificare tutti gli script, ma non sempre funzionano, di solito quando lavoro su script in php su un server che non conosco la prima cosa che faccio è lanciare phpinfo() in modo da sapere in anticipo quali sono i settaggi, ma lavorando "well-formed" in genere non capitano mai disavventure

 ;)
Loggato
Volverine
Visitatore
Register_globals_off
« Risposta #2 il: 10 Marzo 2005, 16:15:02 »

Anche se è stato più volte ribadito che è consigliabile aggiornare i propri script in modo da utilizzare correttamente gli array superglobali, di seguito un piccolo esempio per "aggirare" velocemente l'impostazione del register_globals.

Come già indicato, le variabili che vengono passate nell'URL tramite querystring non sono più "richiamabili" direttamente con la direttiva register_globals disabilitata...
Ad esempio:
URL: www.pippo.it?id=3
con register_globals abilitato per vedere il contenuto di id basta scrivere nello script:
echo $id;
con register_globals disabilitato per vedere il contenuto di id bisogna invece scrivere:
echo $_REQUEST['id'];

Com'è facile intuire basterebbe qualche riga di codice che in automatico converte i valori presenti negli array superglobali nelle relative variabili, per poter richiamare le variabili come si faceva precedentemente.
Il seguente script:
Codice:
#####################
$ArrayList = array("_GET", "_POST", "_SESSION", "_COOKIE", "_SERVER");
foreach($ArrayList as $gblArray)
{
$keys = array_keys($$gblArray);
foreach($keys as $key)
{
$$key = trim(${$gblArray}[$key]);
}
}
################################
che va incluso all'inizio di ogni file php in cui è necessario, non fa altro che convertire i valori presenti nei vari array superglobali, nelle relative variabili.

Buon lavoro
« Ultima modifica: 11 Marzo 2005, 05:59:45 da effe8 » Loggato
groucho.it
Nuovo Utente
**
Posts: 5


Register_globals_off
« Risposta #3 il: 2 Aprile 2005, 10:38:08 »

Salve.
Ho provato ad aggiungere il codice proposto all'inizio dei file php ma mi viene restituito un errore:
Codice:

Warning: array_keys(): The first argument should be an array in /home/mhd-03/www.groucho.it/htdocs/oleggio2/admin/reg_globals_on.php on line 6

Warning: Invalid argument supplied for foreach() in /home/mhd-03/www.groucho.it/htdocs/oleggio2/admin/reg_globals_on.php on line 7

Le linee 6 e 7 sono:
Codice:
$keys = array_keys($$gblArray);
foreach($keys as $key)

ho sbagliato qualcosa?
Grazie mille
Loggato
virugge
Appena Entrato
*
Posts: 3


Register_globals_off
« Risposta #4 il: 4 Aprile 2005, 02:55:41 »

E' possibile evitare il messaggio di errore aggiungendo 2 righe di codice:

Codice:
$ArrayList = array("_GET", "_POST", "_SESSION", "_COOKIE", "_SERVER");
foreach($ArrayList as $gblArray) {
              if (!empty($$gblArray)) {
  $keys = array_keys($$gblArray);
  foreach($keys as $key) {
        $$key = trim(${$gblArray}[$key]);
  }
}
}

Ciauz! Wow

 
Loggato
PaTLaBoR
Nuovo Utente
**
Posts: 9


Register_globals_off
« Risposta #5 il: 21 Aprile 2005, 13:55:58 »

quindi praticamente non posso usare il mio forum, Xmb forum versione Nexus...  :rolleyes:  
Loggato
guardaqua
Supervisore
*
Posts: 717


Register_globals_off
« Risposta #6 il: 26 Aprile 2005, 16:19:16 »

Ri-posto qui (a distanza di qualche giorno), ciò che avevo messo nel forum di programmazione, gradirei ricevere una risposta che penso possa interessare molti.
Ecco il mio precedente messaggio:

Cercando cercando, ho trovato un ciclo che permette di convertire le variabili globali in variabili che funzionano anche con REGISTER_GLOBALS settato su OFF.

In pratica, basta inserire nelle pagine PHP il seguente codice:

Codice:
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);

if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}

foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}


Quello che vorrei sapere, non essendo un esperto di PHP, è se così facendo si mantiene il livello di sicurezza assicurato dall'avere le variabili globali disabilitate.

Ciao a tutti
Loggato

bigwednesday42
Utente
***
Posts: 161


Register_globals_off
« Risposta #7 il: 3 Giugno 2005, 06:55:21 »

x guardaqua:

usare l'impostazione global_var = On è pericoloso, usare cicli che "trasportano" la visibilità di tutte le variabili in "globali" lo è altrettanto, se non di piu' ,.,.,
a questo punto, visto che comunque ci devi mettere le mani per fare questi cicli, perchè non lo modifichi in modo che funzioni con l'impostazione glob_var = OFF !?
di sicuro ti viene un codice piu' corretto ed pulito ,.,

sul mio sito (recursigner) ho scritto un articoletto dove spiego con un esempio molto semplice perchè è pericolosa l'impostazione off, daglli un'occhiata ,.,.

se poi ti serve una mano per modificare il codice per farlo funzionare con glob_var = off non hai che da chiedere ,.,

ciao
Loggato
SuperSavio
Utente Attivo
****
Posts: 274


Register_globals_off
« Risposta #8 il: 11 Giugno 2005, 16:06:30 »

scusate ragazzi poichè nn so usare bene il php vorrei sapere se riuscite a fare in modo che questo codice sia conpatibile con il Register_Globas_Off

Codice:
       <?php
include_once("include/config.php");
include_once("include/auth.lib.php");

list($status, $user) = auth_get_status();

if($status == AUTH_NOT_LOGGED){
$uname = strtolower(trim($_POST['uname']));
$passw = strtolower(trim($_POST['passw']));

if($uname == "" or $passw == ""){
  $status = AUTH_INVALID_PARAMS;
}else{
  list($status, $user) = auth_login($uname, $passw);
  if(!is_null($user)){
   list($status, $uid) = auth_register_session($user);
  }
}
}

switch($status){
case AUTH_LOGGED:
  header("Refresh: 3;URL=home.php");
  echo '<div align="center">Sei gia connesso ... attendi il reindirizzamento</div>';
break;
case AUTH_INVALID_PARAMS:
  header("Refresh: 3;URL=home.php");
  echo '<div align="center">Hai inserito dati non corretti ... attendi il reindirizzamento</div>';
break;
case AUTH_LOGEDD_IN:
  switch(auth_get_option("TRANSICTION METHOD")){
   case AUTH_USE_LINK:
    header("Refresh: 3;URL=home.php?uid=".$uid);
   break;
   case AUTH_USE_COOKIE:
    header('Refresh: 3;URL=home.php');
    setcookie('uid', $uid, time()+3600*365);
   break;
   case AUTH_USE_SESSION:
    header("Refresh: 3;URL=home.php");
    $_SESSION['uid'] = $uid;
   break;
  }
  echo '<div align="center">Ciao '.$user['name'].' ... attendi il reindirizzamento</div>';
break;
case AUTH_FAILED:
  header("Refresh: 3;URL=home.php");
  echo '<div align="center">Fallimento durante il tentativo di connessione ... attendi il reindirizzamento</div>';
break;
}
?>
visto che lo script di che uso per la registrazione login e protezione quando uno si logga mi da errore alla pagina login forse l'errore da come mi ha suggerito tophost è il fatto che lo script nn sia compatibile con il register....... chi mi puo aiutare
Grazie Anticipato
Loggato




Errare e' umano, ma per fare veramente casino serve la password di root.
SuperSavio
Utente Attivo
****
Posts: 274


Register_globals_off
« Risposta #9 il: 12 Giugno 2005, 00:45:34 »

scusate  ma dopo leggendo un paio di volte la discussione forse ho capito ma vorrei vedere se la procedura che faccio è sbagliata visto che mi esce sempre l'errore allora nel codice postato precedentemente ho aggiunto

Codice:
<?php
include_once("include/config.php");
include_once("include/auth.lib.php");
include_once("include/reg_globals_on.php");
........

poi nella pagina reg_globals_on.php ho inserito questo codice
Codice:
$ArrayList = array("_GET", "_POST", "_SESSION", "_COOKIE", "_SERVER");
foreach($ArrayList as $gblArray) {
             if (!empty($$gblArray)) {
 $keys = array_keys($$gblArray);
 foreach($keys as $key) {
       $$key = trim(${$gblArray}[$key]);
 }
}
}

ma questa volta mi esce come errore
Citazione
$ArrayList = array("_GET", "_POST", "_SESSION", "_COOKIE", "_SERVER"); foreach($ArrayList as $gblArray) { if (!empty($$gblArray)) { $keys = array_keys($$gblArray); foreach($keys as $key) { $$key = trim(${$gblArray}[$key]); } } }
Warning: Cannot modify header information - headers already sent by (output started at /home/mhd-03/www.cuginiditalia.it/htdocs/login.php:11) in /home/mhd-03/www.cuginiditalia.it/htdocs/login.php on line 78

Warning: Cannot modify header information - headers already sent by (output started at /home/mhd-03/www.cuginiditalia.it/htdocs/login.php:11) in /home/mhd-03/www.cuginiditalia.it/htdocs/login.php on line 79

la riga 78 e 79 sono:
[CODE]
case AUTH_USE_COOKIE:
         78:  header("Refresh: 3;URL=home.php");
         79:      setcookie('uid', $uid, time()+3600*365);



mi potete aiutare è abbastanza urgente grazie anticipato:( Triste Triste Triste  
Loggato




Errare e' umano, ma per fare veramente casino serve la password di root.
SuperSavio
Utente Attivo
****
Posts: 274


Register_globals_off
« Risposta #10 il: 12 Giugno 2005, 02:02:16 »

allora per la pagina fatto ora nn mi stampa più il codice banalissimo errore mio da mettersi vergogna cmq mi esce sempre errore riga 78 e 79 chi mi puo aiutare??
Loggato




Errare e' umano, ma per fare veramente casino serve la password di root.
bigwednesday42
Utente
***
Posts: 161


Register_globals_off
« Risposta #11 il: 13 Giugno 2005, 12:27:41 »

hai provato a modificare l'header della pagina mentre era gia partito ,.,. forse usi un redirect !??!
 
Loggato
SuperSavio
Utente Attivo
****
Posts: 274


Register_globals_off
« Risposta #12 il: 13 Giugno 2005, 15:02:48 »

risolto grazie Wow  
Loggato




Errare e' umano, ma per fare veramente casino serve la password di root.
Arkantos
Utente
***
Posts: 178


Register_globals_off
« Risposta #13 il: 18 Luglio 2006, 13:33:08 »

nonostante è passato un annetto posso chiederti come hai risolto? :°D° :roftl:  
Loggato
Onorem
Utente
***
Posts: 33


Register_globals_off
« Risposta #14 il: 4 Ottobre 2006, 13:56:44 »

Non poteva lanciare setcookie dopo header, doveva invertirli Linguaccia
Loggato
Pagine: [1] 2
 
 
Salta a:  

Oggetto Iniziato da Risposte Visto Ultimo Post
Perche' Non Si Riesce Ad Installare Questo Script? alibi74 9 2620 Ultimo Post 1 Dicembre 2005, 13:36:24
da alibi74
Installazione Zencart puCK2001 5 2270 Ultimo Post 7 Settembre 2005, 16:44:51
da Tophost
Impostazioni Interne federikazzo 4 1500 Ultimo Post 16 Agosto 2005, 09:49:02
da ErEiSeR
Aiuto Php netgost 6 1655 Ultimo Post 29 Maggio 2005, 09:55:49
da LucaZone
Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC
Traduzione Italiana a cura di SMItalia

TinyPortal v0.9.8 © Bloc
XHTML 1.0 Valido! CSS Valido!


Ultima visita di Google a questa pagina 3 Agosto 2010, 06:51:40