Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [sicurezza] protezione da sql injection

    Ciao a tutti ,
    ho quasi finito un lavoretto e prima di pubblicarlo volevo renderlo un minimo sicuro proteggendolo dalla sql injection.
    Calcolando che non ho form,ma dati passati tramite url (get) come posso fare per proteggermi???
    Conoscete qualche metodo per stare tranquilli???
    Grazie a tutti

  2. #2
    in questa pagina trovi le indicazioni per controllare le variabili prelevate da url

  3. #3
    ok, ho dato un'occhiata.
    non devo fare insert o update ma solo eseguire viste con variabili prese dall'url.
    quando prelevo i dati da url col get se faccio addslahes si aggiungono slashes che poi mi vanno afinire nella query?
    questo è un problema!

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Quando ti preoccupi della sicurezza a lavoro finito, ben difficilmente otterrai risultati brillanti.

    L'addslashes(), che peraltro non è la soluzione migliore, è solo una parte della questione. C'è una mia pillola nel 3d in evidenza sul modo giusto per trattare le stringhe in input al database.

    Per quanto riguarda la sicurezza da SQL injection, le cose da fare sono essenzialmente due:
    1) mettere fra apici qualsiasi valore passato alla query, anche se numerico
    2) controllare sempre che i valori in input (GET o POST non fa differenza) siano del tipo che ti aspetti. Ovvero, fondamentalmente, che siano numerici quando devono esserlo.

    Se applichi queste due regole più la pillola sopracitata dovresti stare tranquillo. E se ci avessi pensato all'inizio adesso eviteresti di massacrarti i co@@@oni.

  5. #5
    perchè devo mettere tra apici il valore ricevuto?

  6. #6
    Originariamente inviato da luca200
    L'addslashes(), che peraltro non è la soluzione migliore, è solo una parte della questione
    la funzione addslashes() garantisce compatibilità con qualsiasi database si abbia a che fare e il suo lavoro lo fà egregiamente. Non vedo perchè si debba ricorrere a soluzioni alternative.
    Se parli di "simpatia" è un altro discorso.

    Originariamente inviato da luca200
    2) controllare sempre che i valori in input (GET o POST non fa differenza) siano del tipo che ti aspetti. Ovvero, fondamentalmente, che siano numerici quando devono esserlo.
    è proprio il discorso che ho fatto io per il cast del tipo di dato che si deve trattare. :rollo:


  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da RobinHoood
    non devo fare insert o update ma solo eseguire viste con variabili prese dall'url.

    Allora inizia utilizzando un utente mysql che abbia i soli permessi necessari in lettura.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  8. #8
    ok, ho già creato questo utente con i permessi molto ristretti.


    Ma per proteggrmi dall'injection cosa devo fare operativamente?
    ricevo la variabile e poi utilizzo addslashes ma poi quando finisce nella select devo levare questi slash e quindi diventa inutile utilizzare questa funzione!
    Oppure mi sbaglio?
    Grazie!!

  9. #9
    forse non hai capito perchè ti serve la addslashes().
    Per effettuare la query correttamente, la variabile ricevuta deve essere del valore aspettato.

    Se ad esempio la query è così:

    Codice PHP:
    $q mysql_query("SELECT title FROM table WHERE id='"$_GET['id'] ."'"$db); 
    la variabile $_GET['id'] deve necessariamente contenere un valore numerico.
    Se fosse così, 2" (con gli apici), la query fallirebbe.
    Quindi la addslashes, non ti serve per far funzionare in ogni caso la query, ma per proteggerti da potenziali rischi. Con l'aggiunta degli slash davanti agli eventuali apici, la query fallirà comunque, ma sarai sicuro che non può succedere niente.


  10. #10
    ok ora mi è chiaro, e se la query fallisce a causa dll'addslashes mysql come si comporta?

    ho provato a passare ' or '1' = '1 tramite url

    e il risultat è stato \' or \'1\' = \'1

    io però non ho ancora inserito la funzione addslashes() pertanto deduco che mysql abbia "qualcosa" che aggiunge in automatico slashes oppure mi sbaglio?

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.