Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281

    se il register_globals = ON?

    Ciao a tutti

    Devo implementare un'applicazione su un host dove il register_globals = ON. Non ditemi di cambiare hosting perchè non è possibile

    Ponendo il caso di avere un form complesso formato da molti campi input che passerà via post via valori numerici che di tipo stringa per il db, come fare per contrallare tutte le variabili?

    1) Una possibile soluzione potrebbe essere contrallare variabile per variabile, controllare se esiste, se deve essesre numerica o stringa, applicare funzioni come htmlspecialchars() mysql_real_escape_string(),ecc.
    Ma è una soluzione lunga e poco performante.

    2)Un'altra soluzione potrebbe essere quella di ciclare l'array POST e applicare una funzione che faccia i controlli descritti prima.
    Per quest'ultima soluzione pensavo anche di creare un array predefinito con il nome dei campi ed il tipo di dato che in treoria dovrebbe contenere. Così quando ciclo l'array POST e applico la funzione di controllo posso anche verificare che tipo di campo è, e quindi applicare il controllo giusto.

    Secondo voi la seconda soluzione potrebbe essere decente ai fini di una protezione?

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    nei commenti di php.net

    If you're under an Apache environment that has this option enabled, but you're on shared hosting so have no access to php.ini, you can unset this value for your own site by placing the following in an .htaccess file in the root:

    php_flag register_globals 0

    The ini_set() function actually accomplishes nothing here, since the variables will have already been created by the time the script processes the ini file change.

    And since this is the security chapter, just as a side note, another thing that's helpful to put into your .htaccess is:

    <Files ".ht*">
    deny from all
    </Files>

    That way no one can load .htaccess in their browser and have a peek at its contents.

    Sorry, not aware of a similar workaround for IIS. :\

  3. #3
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281


    non posso usare gli .htaccess per settare direttive di php.ini

    quindi la mia dopmanda rimane quella

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940

    Re: se il register_globals = ON?

    Originariamente inviato da pgm
    2)Un'altra soluzione potrebbe essere quella di ciclare l'array POST e applicare una funzione che faccia i controlli descritti prima.
    Per quest'ultima soluzione pensavo anche di creare un array predefinito con il nome dei campi ed il tipo di dato che in treoria dovrebbe contenere. Così quando ciclo l'array POST e applico la funzione di controllo posso anche verificare che tipo di campo è, e quindi applicare il controllo giusto.

    Secondo voi la seconda soluzione potrebbe essere decente ai fini di una protezione?
    Certo che lo è, ma questo lo si dovrebbe fare sempre, indipendentemente dal valore di register_globals.
    Anzi, il problema che ti dà register_globals ad ON non è il mancato parsing dell'input utente, ma la questione che passando una variabile in query string questa per lo script è identica ad una variabile interna allo script stesso... Quindi se vogliamo ciò che dici è giustissimo, ma col register_globals non c'entra poi tanto...

    [.:: JaguarXF ::.]
    __________________

  5. #5

  6. #6
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370
    <?php

    $array = array_keys($_GET);
    foreach($array as $var_to_delete)
    unset(${$var_to_delete});


    echo($_GET['valore'] . "
    ");
    echo($valore . "
    ");

    ?>

    ma le globali registrate sono solo $_GET o anche post, server, cookie, files, session?

  7. #7
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    Originariamente inviato da Gunn
    <?php

    $array = array_keys($_GET);
    foreach($array as $var_to_delete)
    unset(${$var_to_delete});


    echo($_GET['valore'] . "
    ");
    echo($valore . "
    ");

    ?>

    ma le globali registrate sono solo $_GET o anche post, server, cookie, files, session?
    @Gunn
    sono post in generale. chiaramente volevo poi estendere il discorso anche alle get, visto ch potrà capitare di aprire una pop-up e mettere variabili in query string.
    grazie per il tuo intervento.

    @mark2x
    il ciclo che menzionavo nella seconda soluzione era anche per evitare le code iniection.
    quindi alla fine basta iniializzare le variabili e il gioco è fatto?

  8. #8
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Per "far finta che" register_globals sia ad OFF sì.


    [.:: JaguarXF ::.]
    __________________

  9. #9
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    Originariamente inviato da mark2x
    Per "far finta che" register_globals sia ad OFF sì.

    purtroppo devo far finta


    grazie comunque per i chiarimenti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.