Mysql
 sql >> Database >  >> RDS >> Mysql

SQL injection in Java e MySQL quando si utilizzano più query

Ovviamente, se modifichi la combinazione di database/driver dalla tua attuale implementazione a qualcosa che supporta più richieste, attiverai una falla di sicurezza dormiente che (senza dubbio) le persone si saranno dimenticate!

Ignorando gli scenari nefasti e dannosi, quanto sopra ti causerà problemi con l'inserimento di dati regolari, comprese le virgolette ecc., ovvero quanto sopra semplicemente non funzionerà per particolari insiemi di dati (a meno che non siano stati ripuliti/cancellati, ecc.). Lo correggerei semplicemente per motivi di funzionalità.

Dovresti dare un'occhiata a PreparedStatement e i metodi di inserimento dei dati per questo (setString() ) ecc.

es.:

   PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                     SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setString(2, "Insert what you like here")

Il metodo setString() supporterà qualsiasi stringa senza problemi di escape/iniezione.