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