|  | 		    
					
        
         
          
         
	
          | |  | Sql-injektions i jsp - howto handle? Fra : Henrik Davidsen
 | 
 Dato :  23-05-05 15:56
 | 
 |  | Hejsa
 
 I en web-applikation hvor man kan gemme ting fra en form, kan brugeren jo
 skrive tegn som ' og ; og hvad der nu ellers kan få en sql-sætning til at gå
 i koma. Der køres med en Access database. Hvordan sikrer man sig, at
 brugeren godt kan gemme tegn som ', uden at det fucker en sql-streng op??
 
 Hidtil har jeg bare kørt med at generere en sql-sætning ud fra følgende
 princip:
 
 String værdi1 = "test1";
 String værdi2 = "test2";
 String sql = "INSERT INTO Data VALUES (";
 sql += "'"+test1 + "', '"+test2+"')";
 
 Den resulterende sql-streng ser så sådan ud:
 
 INSERT INTO Data VALUES ('test1','test2')
 
 Og det giver jo et problem, hvis værdi1-attributten indeholder følgende
 streng: "test1' giver fejl"
 
 Hvordan klarer man det?
 
 /Sjang
 
 
 
 
 |  |  | 
  Malte (23-05-2005) 
 
	
          | |  | Kommentar Fra : Malte
 | 
 Dato :  23-05-05 16:19
 | 
 |  | Henrik Davidsen wrote:
 > Hejsa
 >
 > I en web-applikation hvor man kan gemme ting fra en form, kan brugeren jo
 > skrive tegn som ' og ; og hvad der nu ellers kan få en sql-sætning til at gå
 > i koma. Der køres med en Access database. Hvordan sikrer man sig, at
 > brugeren godt kan gemme tegn som ', uden at det fucker en sql-streng op??
 >
 > Hidtil har jeg bare kørt med at generere en sql-sætning ud fra følgende
 > princip:
 >
 > String værdi1 = "test1";
 > String værdi2 = "test2";
 > String sql = "INSERT INTO Data VALUES (";
 > sql += "'"+test1 + "', '"+test2+"')";
 >
 > Den resulterende sql-streng ser så sådan ud:
 >
 > INSERT INTO Data VALUES ('test1','test2')
 >
 > Og det giver jo et problem, hvis værdi1-attributten indeholder følgende
 > streng: "test1' giver fejl"
 >
 > Hvordan klarer man det?
 >
 > /Sjang
 >
 >
 
 Hmm, i al almindelighed ville jeg aldrig pushe noget bruger input ind i
 en sql sætning. I daglig omgang med Oracle bruger jeg stored procedures
 og udsætter alt uundgåeligt input for regulære udtryk og andet, som
 udelukker, at brugerens input får ubeset igennem.
 
 I tilfældet med Access ville jeg nok introducere nogle sanitizing
 metoder, som kigger nøje, meget nøje, på input. Og de bør måske
 introduceres som javabeans.
 
 
 |  |  | 
  Michael Rasmussen (23-05-2005) 
 
	
          | |  | Kommentar Fra : Michael Rasmussen
 | 
 Dato :  23-05-05 17:46
 | 
 |  | 
 
            On Mon, 23 May 2005 17:18:42 +0200, Malte wrote:
 > 
 > I tilfældet med Access ville jeg nok introducere nogle sanitizing
 > metoder, som kigger nøje, meget nøje, på input. Og de bør måske
 > introduceres som javabeans.
 Hvad med preparedStatement? Den laver automatisk sanitize ved at escape
 farlige tegn i input.
 -- 
 Hilsen/Regards
 Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917 |  |  | 
   Malte (23-05-2005) 
 
	
          | |  | Kommentar Fra : Malte
 | 
 Dato :  23-05-05 18:50
 | 
 |  | Michael Rasmussen wrote:
 > On Mon, 23 May 2005 17:18:42 +0200, Malte wrote:
 >
 >
 >>I tilfældet med Access ville jeg nok introducere nogle sanitizing
 >>metoder, som kigger nøje, meget nøje, på input. Og de bør måske
 >>introduceres som javabeans.
 >
 > Hvad med preparedStatement? Den laver automatisk sanitize ved at escape
 > farlige tegn i input.
 >
 
 Klart at foretrække frem for dynamisk sql.
 
 
 |  |  | 
    Jesper Louis Anderse~ (23-05-2005) 
 
	
          | |  | Kommentar Fra : Jesper Louis Anderse~
 | 
 Dato :  23-05-05 21:49
 | 
 |  | Malte wrote:
 
 > Klart at foretrække frem for dynamisk sql.
 
 Nemlig ja!
 
 Ud med dynamisk sql og ind med static sql, prepared statements og
 placeholders.
 
 
 |  |  | 
 |  |