Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 26
  1. #11
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Come già scritto serve un approccio multiplo.
    Per trovare i ; basta... cercarli come sottostringa.
    Poi i token SQL che, in realtà, sono piuttosto pochi.
    Gli apici

  2. #12
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    Originariamente inviato da Alhazred
    Si, ma se nella variabile $id c'è dentro 5 OR 1

    la query che generi è

    select * from nometabella where id=5 OR 1

    che equivale a un WHERE sempre verificato grazie al OR 1, in questo modo viene preso tutto il contenuto della tabella.
    quindi scusa come elimino questo rischio?

    e nel caso di un login con nome utente e passwor?

  3. #13
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Originariamente inviato da lorenzo84
    quindi scusa come elimino questo rischio?

    e nel caso di un login con nome utente e passwor?
    Risolvi verificando cosa c'è in ogni variabile che andrà a far parte di una query.

    Se $id deve contenere un intero:
    Codice PHP:
    if ( ! is_int($id) )
    {
        echo 
    "Ehi, chi vuoi fregare? Devi darmi un numero intero!";
    }
    else
    {
        
    //la variabile va bene e puoi usarla nella query


  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    Originariamente inviato da Alhazred
    Risolvi verificando cosa c'è in ogni variabile che andrà a far parte di una query.

    Se $id deve contenere un intero:
    Codice PHP:
    if ( ! is_int($id) )
    {
        echo 
    "Ehi, chi vuoi fregare? Devi darmi un numero intero!";
    }
    else
    {
        
    //la variabile va bene e puoi usarla nella query

    si questo ci sono. Ma nel caso di un nome utente e pass che sono varchar come potrei risolvere?

    grazie mille a tutti per le risposte

  5. #15
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Usa PDO, e te ne sbatti di qualsiasi SQL injection, perché ci pensa lui.

    Per i dati inc hiaro o utilizzi il protocollo ssl, o i dati più sensibili (la password) li puoi criptare sul client e trasmetterli criptati, in sha1 per esempio: http://www.webtoolkit.info/javascript-sha1.html

  6. #16
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    Originariamente inviato da Ranma2
    Usa PDO, e te ne sbatti di qualsiasi SQL injection, perché ci pensa lui.

    Per i dati inc hiaro o utilizzi il protocollo ssl, o i dati più sensibili (la password) li puoi criptare sul client e trasmetterli criptati, in sha1 per esempio: http://www.webtoolkit.info/javascript-sha1.html
    scusa cosa è PDO?

    e poi una volta criptati come faccio a inviarli? non conosco javascript. e li posso decriptare? io nel db inserisco le password in MD5.

  7. #17
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    PDO: http://php.net/manual/it/book.pdo.php


    Beh è proprio li il vantaggio tu invii la password già criptata in MD5. Non serve avere conoscente estreme di javascript, basta fare una ricerca su google e cercare la funzione da implementare a codice.

  8. #18
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    Originariamente inviato da Ranma2
    PDO: http://php.net/manual/it/book.pdo.php


    Beh è proprio li il vantaggio tu invii la password già criptata in MD5. Non serve avere conoscente estreme di javascript, basta fare una ricerca su google e cercare la funzione da implementare a codice.
    si infatti generalmente uso script già pronti anche se voglio iniziare a conoscere questo linguaggio...

    quindi potrei convertire la stringa prima di inviarla in chiaro? anche se lascia il tempo che trova perchè poi nel db comunque è salvata in md5 e quindi cambia poco no?

  9. #19
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    scusate ma ho provato a inserire il controllo con is_int ma non funziona. Cioè se scrivo:

    DELETE FROM t9154_mail WHERE id=14 or 1

    va avanti lo stesso..

    if ( is_int($id) ) //controllo che id sia numerico
    {
    ok va bene
    }
    else
    {
    errore e si ferma.
    }
    però va avanti...

    EDIT: ho risolto. sostituito is_int con is_numeric().

  10. #20
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Originariamente inviato da lorenzo84
    ...
    quindi potrei convertire la stringa prima di inviarla in chiaro? anche se lascia il tempo che trova perchè poi nel db comunque è salvata in md5 e quindi cambia poco no?
    No, supponi questi scenari:

    1) password inviata in chiaro e conversione fatta sul server

    tu utente inserisci username 'pippo' e password 'pippo' ed invii i dati.
    Io malintenzionato intercetto la comunicazione e leggo
    username -> pippo
    password -> pippo

    Ora posso fare il login tranquillamente anch'io con le tue credenziali.

    2) password inviata criptata dal client e niente conversione sul server

    tu utente inserisci username 'pippo' e password 'pippo' ed invii i dati.
    Io malintenzionato intercetto la comunicazione e leggo
    username -> pippo
    password -> 0c88028bf3aa6a6a143ed846f2be1ea4

    Ora io per il login inserirei 0c88028bf3aa6a6a143ed846f2be1ea4 come password, ma a questo punto non sarebbe corretta, perché il client ricodificherebbe questo in MD5 inviando in realtà
    1b12fefbe423632ed041dd56f48ba47c

    che non è la password corretta e quindi il login fallisce.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.