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

    JSP - prevenire SQL Injection da form

    Ciao a tutti,

    premetto che sono nuovo a jsp, anche se circa 7 anni fa ne ho avuto a che fare, quindi qualcosina ricordo....

    Sto tentando di cannibilizzare dei tutorial presi iin giro per poter creare una gestione degli accessi a determinate pagine sul server.....

    Il problema è che ad ora non ho trovato nessuno che si premonisse da eventuali attacchi di SQL Injection dal form di richiesta dei dati dell'account.. VVoVe: Mi basterebbe eliminare una serie di caratteri non ammessi oppure convertire il testo inserito in un formato html (ad esempio lo spazio convertirlo in %20, il famigerato ' in %27 e così via. Immagino esista una funzione che faccia una cosa del genere, ma francamente non riesco a trovare info in giro.

    Qualcuno sa darmi una mano!?!?

    Grazie a tutti, ciao!
    Massimiliano PASQUALONI
    http://www.pasqualoni.it
    articoli tecnici, tutorial, news, programmi utili.
    Vienimi a trovare!

  2. #2
    Credo di aver trovato uno script Java che può fare al mio caso.

    Codice PHP:
    function controllaDPost(STRINGA)
    {
            if( 
    STRINGA == '' )  return '';
            
    validi "0123456789abcdefghilmnopqrstuvzwjx-_ABCDEFGHILMNOPQRSTUVZWJX@";
            for( 
    011i++ ){
                    if( 
    validi.indexOfSTRINGA.charAt(i) ) == -)
                            return 
    ''
            
    }
            
            return 
    STRINGA;


    Il problema è che questo è uno script ideato per girare lato client, io dovrei integrarlo lato server....

    Qualche buon'anima mi da una mano?!?!?
    Massimiliano PASQUALONI
    http://www.pasqualoni.it
    articoli tecnici, tutorial, news, programmi utili.
    Vienimi a trovare!

  3. #3
    Puoi agire in due modi:

    1) Per eseguire la query utilizzare i PreparedStatement che risolvono automaticamente problemi del genere anzichè gli Statement (soluzione consigliata).

    2) Eseguire un replace dei caratteri speciali sulla stringa che rappresenta la query. Ad esempio:

    codice:
    String cognome = "d'amico";
    //occorre sostituire l'apice con un doppio apice affinchè la stringa sql sia valida
    String query = "select * from utenti where cognome = '"+cognome.replaceAll("'","''")+"'";
    Al mio segnale... scatenate l'inferno!

  4. #4


    ci stavo arrivando, ma ho fatto le prove e mi sembra di non aver risolto niente....

    Codice PHP:
    PreparedStatement ps connection.prepareStatement("SELECT * FROM ISCRITTI WHERE username=\"?\" and password=\"?\"");
        try
        {
          
    ps.setString(1getUsername());
          
    ps.setString(2getPassword());
          
    ps.executeQuery();
          if(
    ps.next()) {
                   
    nome ps.getString("nome");
                 
    cognome ps.getString("cognome");
                 
    email ps.getString("email");
                 
    username ps.getString("username");
                 
    password ps.getString("password");
                 
    hobby ps.getString("hobby");
                 
    auth=true//se l'utente esiste nel database
             

        }
        finally
        {
          
    ps.close();
        } 
    Se provo dell'sql injection vedo che i caratteri non vengono filtrati, sbaglio qualcosa nella preparazione della query?
    Massimiliano PASQUALONI
    http://www.pasqualoni.it
    articoli tecnici, tutorial, news, programmi utili.
    Vienimi a trovare!

  5. #5
    Ho provato anche ad implementare il replace, ma non mi sembra funzioni...

    Codice PHP:
     ps.setString(1getUsername().replaceAll("'","\"")); 
    Massimiliano PASQUALONI
    http://www.pasqualoni.it
    articoli tecnici, tutorial, news, programmi utili.
    Vienimi a trovare!

  6. #6
    ho idea che Tomcat mi faccia felice e gabbato....
    Midifico il bean ma non vedo le modifiche fatte, nonstante cancelli le pagine in cache in \work\Catalina\localhost.

    Che tu sappia c'è qualche altra chace in giro?
    Massimiliano PASQUALONI
    http://www.pasqualoni.it
    articoli tecnici, tutorial, news, programmi utili.
    Vienimi a trovare!

  7. #7
    Ho svelato l'arcano.... Sto lavorando sul sorgente del bean, mi sa che devo compilarlo se voglio farlo funzionare!

    Atc!
    Massimiliano PASQUALONI
    http://www.pasqualoni.it
    articoli tecnici, tutorial, news, programmi utili.
    Vienimi a trovare!

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Per i PreparedStatement, togli gli apici dalla query e lascia solo ?.
    codice:
    PreparedStatement ps = connection.prepareStatement("SELECT * FROM ISCRITTI WHERE username=? and password=?");
    Ma sei sicuro che non funzioni? Come password dalla jsp passagli pass' or 1=1 e guarda che ti dice.
    Per quanto riguarda il replace, la sequenza di escape nell'sql è '' (2 singoli apici) e non " (doppio apice).Quindi
    codice:
    getUsername().replaceAll("'","\\'\\'")

  9. #9
    Ma io ci divento scemo!?!?!

    Mi mostra le modifiche fatte dopo mezz'ora!

    dopo aver visto che se modificavo il file utentibean.java non cambiava nulla, ho rimesso tutto come stava ed ho provato a modificare diremttamente il jsp mandando in pasto al bean le variabili ripulite.

    Aggiorno la pagina e mi viene fuori una prova che avevo fatto impostato lo username su "prova" per vedere se effettivamente si prendeva le modifiche..

    Ma che devo riavviare tomcat ad ogni modifica al bean?

    Magnifico, manco windows 95!!!
    Massimiliano PASQUALONI
    http://www.pasqualoni.it
    articoli tecnici, tutorial, news, programmi utili.
    Vienimi a trovare!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Se non usi un ambiente di sviluppo che lo fa per te, temo tu lo debba avviare ad ogni modifica che coinvolge qualcosa che non sia una JSP.

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.