/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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.

Søg
Reklame
Statistik
Spørgsmål : 177449
Tips : 31962
Nyheder : 719565
Indlæg : 6408120
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste