benlen Skrevet 3. mai 2006 Del Skrevet 3. mai 2006 (endret) Hei Jobber med å beskytte en servlet mot SQL injections og har derfor gått over til preperdstatment, men det viste seg at jeg ikke kunne "bruke" det på å velge hvilken tabell jeg ville spørre. Jeg har selv prøvd å gjøre en sql injection med noe slikt som dette: http://server.com?user=98792765&msg=hva&co...+%60test%60);-- men det funket ikke. Noen som mener det kan gjøres? Altså gjøre en sql injection. Tenker også at jeg bør gjøre litt sjekk på hva contact egentlig er. public String sendMsg(String user, String msg, String contact) { String response=""; PreparedStatement ps = null; try { ps = connectionMSGDB.prepareStatement("INSERT INTO `"+contact+"` (from_user, msg) VALUES (? , ? )"); // ps.setString(1, contact); ps.setString(1, user); ps.setString(2, msg); i=ps.executeUpdate(); } catch (SQLException ex1) { response += "Code 8: " + ex1; } return response; } Endret 4. mai 2006 av benlen Lenke til kommentar
Frank2004 Skrevet 3. mai 2006 Del Skrevet 3. mai 2006 Du trenger ikke beskytte deg mot sql-injection i tabellnavn. Det kan muligens forsvares at tabellnavnene ligger i en slags konfigurasjonsfil, men hvis en angriper har tilgang til noe slikt så har du større problemer å bekymre deg over. Og merk at hvis en bruker på noen som helst måte kan påvirke hvilken tabell spørringen kjøres mot, så bør du ta deg en pause og lese en god bok om databasemodellering. Om du startet tråden her for å fiske etter exploits, så må jeg vel bare henvise til google. Hvis du er ute etter sikkerhet, så gir Java med prepared statements alt du trenger for å forhindre det meste av buffer overflows og sql injection. Lenke til kommentar
benlen Skrevet 3. mai 2006 Forfatter Del Skrevet 3. mai 2006 Og merk at hvis en bruker på noen som helst måte kan påvirke hvilken tabell spørringen kjøres mot, så bør du ta deg en pause og lese en god bok om databasemodellering. Bør kanskje nevne at "contact" sjekkes opp mot ett passord til den kontakten(tidligere i programmet). Hvorfor er det så ille at brukeren påvirke hvilken tabell spørringen kjøres mot? Passordet bekrefter jo at han skal få lov til den tabellen Lenke til kommentar
Frank2004 Skrevet 4. mai 2006 Del Skrevet 4. mai 2006 Hvorfor er det så ille at brukeren påvirke hvilken tabell spørringen kjøres mot? Passordet bekrefter jo at han skal få lov til den tabellen Hvilken bruker som eier/har tilgang til opplysninger er data, og data ligger som rader i databasen, ikke tabeller. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå