Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [Sicurezza] Gestione query string tramite $_GET

    Buongiorno a tutti!

    Ho una pagina che contiene una galleria di immagini visualizzate tramite interrogazione a db. Nella stessa pagina c'è la possibilità di cambiare album e visualizzare altre foto tramite elenco ordinato di voci. Le voci sono così ordinate:

    Codice PHP:
    <?php
    echo = '[*][url="'.BASE.'?album=animals"]'.$gal[0].'[/url][*][url="'.BASE.'?album=places"]'.$gal[1].'[/url][*][url="'.BASE.'?album=people"]'.$gal[2].'[/url][*][url="'.BASE.'?album=nature"]'.$gal[3].'[/url][*][url="'.BASE.'?album=details"]'.$gal[4].'[/url]
    '
    ;
    ?>
    Dove "BASE" è una costante contenente l'url. Come vedete quindi si forma una query $_GET. Al click su una delle voci ricarica la stessa pagina con però la variabile GET che andrà a definire la query per estrarre le immagini pertinenti.

    Cliccando la prima volta ok. Si esegue tutto correttamente.

    ..ma poi la barra dell'URL mantiene la query string..quindi se cambio album (clicco su altra voce), mi aggiunge la fine della query string alla query string già presente!!

    Come faccio a togliere la parte eventualmente selezionata in precedenza? Come faccio cioè a "pulire subito" l'URL della barra in modo che si, stampi e formi la query di selezione, ma subito dopo ritorni allo "stato naturale", tipo così:

    DA: http://www.sito.com/gallery.php?album=places
    A: http://www.sito.com/gallery.php

    INVECE CHE: http://www.sito.com/gallery.php?albu...s?album=nature

    ??

    Secondo voi, questa introduzione di codice all'inizio della pagina, può essere una soluzione?
    E' sicura?

    Codice PHP:
    $thisPage $_SERVER['REQUEST_URI'];
    $thisPage explode('/',$thisPage);
    $thisPage explode('?',$thisPage[3]);
    echo 
    var_dump($thisPage); 
    ..lo sò, con questo pezzo non faccio nulla. E' una base di partenza. Ve l'ho postata per ricevere consiglio.

    E poi, visto che ci siamo, mi piacerebbe ricevere consigli su come gestire l'array GET. Finora non ne ho mai avuto bisogno. Sarei felice di ricevere consigli da tutti voi.

    Grazie in anticipo.

  2. #2
    Ti dovrebbe bastare utilizzare HTTP_HOST e PHP_SELF:

    Codice PHP:
    $base $_SERVER['HTTP_HOST']."/".$_SERVER['PHP_SELF']; 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    No. Non basta. Anzi mi sa che proprio non mi serve (o più probabilmente non ho connesso la sua utilità al mio scopo ).

    Quando clicco per la prima volta su una delle voci di menu, all'URL di base si aggiunge la query string.

    Quando clicco una seconda volta su una delle voci di menu, all'URL (che ora contiene la precedente query string), si aggiunge la seconda query string.

    Ciò comporta:

    - Il fatto che non mi vengono visualizzate e selezionate le foto in gallery
    - Ad ogni click su ogni voce di menu (dopo la prima volta), si aggiungono le voci di query string presenti nei tag <a>

  4. #4
    Originariamente inviato da wartpro
    No. Non basta. Anzi mi sa che proprio non mi serve (o più probabilmente non ho connesso la sua utilità al mio scopo )...
    Sostituisci BASE con $_SERVER['HTTP_HOST']."/".$_SERVER['PHP_SELF']
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762


    Grazie satisfal ma...scusa ma..

    la costante BASE mi contiene già il risultato delle variabili server che mi hai postato tu. Non cambia nulla.

    ..a me serve gestirmi l'URL. Ad ogni click su voce di menu, quindi al formarsi della query string, ho bisogno di ripulire l'URL stessa per evitare che si accavallino le query string..

  6. #6
    Perdonami ma mi sfugge qualcosa. Se la tua costante BASE contiene anche la querystring c'è qualcosa che non va. Le variabili $_SERVER['HTTP_HOST']."/".$_SERVER['PHP_SELF'] contengono rispettivamente www.sito.it e il percorso + nome dello script che stai eseguendo per cui se utilizzi queste ogni volta non ci ritroverai anche la querystring!!!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Verooooooooooooooooo!!! L'URL magicamente varia al variare della variazione variata!!!





    Grande satisfal! No non avevo capito (e non ho capito) cosa cambia tra il fatto che utilizzi la costante ed il fatto che utilizzi il codice da te suggerito.

    MA..ora, dato che tutto funziona, rimane una cosa da chiedere: la questione sulla sicurezza dell'array GET.

    Un'operazione di questo tipo secondo te (voi) potrebbe bastare?

    Codice PHP:
    <?php

    $val 
    strip_tags(trim($_GET['album']));

    ?>

    Grazie ancora!


  8. #8
    Puoi utilizzare mysql_real_escape_string()
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Ancora una volta una grande piccola soluzione basta per sostituire la mia soluzione dalle mille funzioni accavallate per ripulire l'eventuale input maligno?



    Nota che il valore passato in GET non entra in query. Il valore di GET lo passo ad uno switch il quale crea una variabile contenente la categoria corrispondente da, poi, passare in query.

  10. #10
    Se gestisci a codice (tramite switch) i parametri passati e non li utilizzi per costruire la query allora non vedo propblemi di sicurezza. Se anche la querystring venisse modificata a mano non dovrebbero esserci problemi.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.