Gå til innhold

Er dette sikkert mot sql injections?


Anbefalte innlegg

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 av benlen
Lenke til kommentar
Videoannonse
Annonse

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
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...