Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661

    [php-mysql] inserire $_GET['var'] in query

    ciao,

    non conosco bene i problemi derivanti da una sql injection...

    ma, mi trovo in questa situazione

    $query .= "ORDER BY ".$_GET['var']." ".$sr_sort."";


    il valore di $_GET['var'] può assumere due CAMPI della tabella del database... onde evitare problemi come si dovrebbe procedere? Ho spulciato il forum... ma non ho trovato qualcosa in particolare alla mia situazione.


    Grazie

  2. #2
    Non ne sono sicuro, ma se qualcuno provasse ad accedere al tuo sito attraverso l'usl


    ....../pagina.php?var=ciccio

    Avrebbe modo di accedere direttamente alla tua pagina

    anche se in un orderby non si possono recare chissà quali danni, faresti bene a memorizzare il valore che prendi di GET in una variabile, filtrarlo cone ventuali test e poi eseguire la query.

  3. #3
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    Originariamente inviato da Dr_House
    Non ne sono sicuro, ma se qualcuno provasse ad accedere al tuo sito attraverso l'usl


    ....../pagina.php?var=ciccio

    Avrebbe modo di accedere direttamente alla tua pagina

    anche se in un orderby non si possono recare chissà quali danni, faresti bene a memorizzare il valore che prendi di GET in una variabile, filtrarlo cone ventuali test e poi eseguire la query.
    difatti.. saresti gentile da suggerirmi dei test da fare?


    grazie

  4. #4
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    up

    qualche suggerimento?


    gracias

  5. #5
    Essenzialmente il problema della sql injection si ha quando fornisci login e password da una pagina web per entrare nelle aree protette di un servizio.

    Esempio. Supponiamo di avere la tabella accessi contenente i campi log_user e pw_user
    Supponiamo che le variabili passate da post siano $_POST['login'] e $_POST['password'].

    nella tua pagina php di controllo, avrai:

    $sql = "SELECT * FROM accessi
    WHERE (log_user='" . $_POST['login'] . "' AND pw_user='" . $_POST['password'] . "')";


    quindi fornendo come login e password i valori prova prova

    si ha:

    $sql = "SELECT * FROM accessi
    WHERE (log_user='prova' AND pw_user='prova')";

    se qualcuno malintenzionato fornisce

    sia come login che come passowrd il valore

    mio' or '1=1

    la variabile $sql diverrebbe:

    $sql = "SELECT * FROM accessi
    WHERE (log_user='mio ' or '1=1' AND pw_user='mio' or '1=1')";

    SICURAMENTE TALE CONTROLLO ANDREBBE A BUON FINE.
    Questo comunque è solo un esempio se cerchi in giro per il web trovi molto altro.

    Nel tuo caso non dovresti avere particolari problemi in quanto la variabile $_GET la usi dopo ORDER BY quindi non ci sono problemi.

  6. #6
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    ok,

    altre considerazioni?


    grazie

  7. #7

    Re: [php-mysql] inserire $_GET['var'] in query

    Originariamente inviato da tigerjack
    mi trovo in questa situazione

    $query .= "ORDER BY ".$_GET['var']." ".$sr_sort."";


    il valore di $_GET['var'] può assumere due CAMPI della tabella del database...
    Grazie
    Questo che vuol dire che $_GET['var'] può contenere il nome di uno solo dei 2 campi o tutti e due?

  8. #8
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661

    Re: Re: [php-mysql] inserire $_GET['var'] in query

    Originariamente inviato da gianf_tarantino
    Questo che vuol dire che $_GET['var'] può contenere il nome di uno solo dei 2 campi o tutti e due?
    ciao,

    può contenere solo uno per volta... es. Prezzo, Anno

    ho la tabella HTML: ID | PREZZO | ANNO

    quando clicco su PREZZO la pagina si riaggiorna ed il valore è $_GET['var'] = prezzo; mentre quando clicco su ANNO la pagina si riaggiorna ed il valore è $_GET['var'] = anno.

    Grazie

  9. #9
    In questo caso allora la soluzione è molto semplice. Da una piccola descrizione che ti ho dato sul problema della SQL injection, basta che tu controlli che la variabile che dovrebbe contenere il tuo campo contenga effettivamente solo una parola! Quindi se vi è + di una parola allora qualcuno sta cercando di fare il furbo.
    Se poi, vuoi proprio esagerare (ma secondo me è del tutto inutile visto il controllo precedente) potresti controllare che la variabile precedente non contenga caratteri come apice, doppio apice, =

  10. #10
    Utente di HTML.it L'avatar di tigerjack
    Registrato dal
    Aug 2003
    Messaggi
    1,661
    tradotto in codice?

    grazie

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.