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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Sikkerhed ved SQL
Fra : Bertel Lund Hansen


Dato : 19-12-04 10:31

Hej alle

Jeg er ved at opbygge en database der skal styres via PHP og HTML
(surprise!).

I PHP-manualen faldt jeg over et afsnit om SQL-injektion. Det er
ikke nyt for mig, men forklaringerne var ikke grundige nok til
mig.

Min opbygning skal bestå af en PHP-side med nogle forms. Siden
kalder sig selv og tjekker at de nødvendige felter er udfyldt og
laver en primitiv kontrol på inputtet (f.eks. at en mailadresse
indeholder @).

Når inputtet er i orden, sammensætter PHP-koden en SQL-kommando
og fyrer den af til databasen så f.eks. et nyt medlem bliver
skrevet ind.

Den eneste slags parameter som vil blive sendt i en URL, er noget
i stil med "?okay=1" som tegn på at inputtet er i orden.

Er den opbygning åben for injektion?

.... eller er jeg nødt til at være mere specifik med hvordan
SQL'en opbygges før man kan tage stilling?

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

 
 
pepss (19-12-2004)
Kommentar
Fra : pepss


Dato : 19-12-04 10:54


"Bertel Lund Hansen" skrev

> I PHP-manualen faldt jeg over et afsnit om SQL-injektion. Det er
> ikke nyt for mig, men forklaringerne var ikke grundige nok til
> mig.

det er godt nok til asp men du kan lære om SQL-injektion her
http://asp-faq.dk/article/?id=95



--
Pepss
Den ordblinde der prøver at blive webdesigner
Fræk frækkere www.cafe-flirt.dk
De frække noveller www.novelle.cafe-flirt.dk



Jens Gyldenkærne Cla~ (19-12-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-12-04 13:52

Bertel Lund Hansen skrev:

> Når inputtet er i orden, sammensætter PHP-koden en SQL-kommando
> og fyrer den af til databasen så f.eks. et nyt medlem bliver
> skrevet ind.

Det er i opbygningen af sql-kommandoen ud fra form-data at man skal
være opmærksom på sql-injection.

Der er to ting man skal tjekke - dels at evt. indlejrede
anførselstegn i form-data ikke ændrer på betydningen af en sql-
kommando og dels at data til en given parameter har en passende
type.

Det første er så vidt jeg ved ret let i php - enten bruger man
magic quotes eller også bruger man funktionen addslashes
(<http://php.planetmirror.com/manual/en/function.addslashes.php>)

Den anden del går ud på at tjekke datatypen serverside før man
lægger det ind i sql-sætningen. Det vil sige lave test på at data
til et talfelt nu også er tal, data til et dato-felt kan fortolkes
som dato etc (det er ikke nødvendigt med noget specielt typetjek på
tekstfelter - her skal man bare escape anførseltegn, jf.
ovenstående).

Jeg ved ikke hvordan man typetjekker i php, men det ved de givetvis
i php-gruppen - hvor de sikkert også kan komme med mere
kvalificerede råd om at håndtere sql-injection i php. Jeg er selv
asp/asp.net-mand, så tag alle mine råd om php med et gran salt -
jeg har endnu ikke skrevet en eneste side i php.


> Den eneste slags parameter som vil blive sendt i en URL, er noget
> i stil med "?okay=1" som tegn på at inputtet er i orden.
>
> Er den opbygning åben for injektion?

Du kan ikke nøjes med at kigge på hvad der ligger i querystring.
Alle tekst-input felter i din formular kan bruges til sql-injection
(i princippet kan det også forekomme i andre felttyper, men det
kræver en bevidst handling)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Stig Johansen (19-12-2004)
Kommentar
Fra : Stig Johansen


Dato : 19-12-04 14:30

Bertel Lund Hansen wrote:

[snip bekymring om SQL-injection/PHP]

Den bedste (og letteste) metode til at undgå dette er at
bruge parameteriserede SQL'er. Det hedder vistnok noget andet i
PHP-verdenen. Jeg bruger ikke selv PHP, men jeg synes, jeg har hørt noget i
stil med 'placeholder'. Der skal du nok over i d.e.w.s.PHP-gruppen.

--
Med venlig hilsen
Stig Johansen

Ryan Dahl (21-12-2004)
Kommentar
Fra : Ryan Dahl


Dato : 21-12-04 10:57

On Sun, 19 Dec 2004 10:30:45 +0100, Bertel Lund Hansen
<nospamius@lundhansen.dk> wrote:
>
>I PHP-manualen faldt jeg over et afsnit om SQL-injektion. Det er
>ikke nyt for mig, men forklaringerne var ikke grundige nok til
>mig.

Hej,

som tillæg til de allerede fremsendte links, så kan du evt. kigge på
http://www.sitepoint.com/article/sql-injection-attacks-safe/5

Fokus er på ms sql server og eksemplerne er i asp, men principperne er
generelle.

mvh
Ryan

Peter Lykkegaard (21-12-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 21-12-04 12:38

"Ryan Dahl" wrote

> som tillæg til de allerede fremsendte links, så kan du evt. kigge på
> http://www.sitepoint.com/article/sql-injection-attacks-safe/5
>
> Fokus er på ms sql server og eksemplerne er i asp, men principperne er
> generelle.

Lige præcis ved den kombination (eller rettere ved ren MS platform) så vil
jeg bruge ado.command objectet og parameteriserede SQL'er som Stig foreslår
Men du har ret i at artiklen giver en indgangsvinkel der er "universel"

- Peter



Bertel Lund Hansen (21-12-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-12-04 17:48

Ryan Dahl skrev:

>som tillæg til de allerede fremsendte links, så kan du evt. kigge på
>http://www.sitepoint.com/article/sql-injection-attacks-safe/5

Jeg siger tak til alle for hjælpen. Jeg har læst på lektien og
fortsætter debatten i PHP-gruppen, men som sædvanlig venter jeg
med at droppe denne her tråd hvis der nu skulle komme flere
guldkorn.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Troels Arvin (03-01-2005)
Kommentar
Fra : Troels Arvin


Dato : 03-01-05 05:58

On Sun, 19 Dec 2004 10:30:45 +0100, Bertel Lund Hansen wrote:

> I PHP-manualen faldt jeg over et afsnit om SQL-injektion. Det er
> ikke nyt for mig, men forklaringerne var ikke grundige nok til
> mig.

Prøv at se denne side, som forekommer at have en usædvanlig grundighed:
http://www.unixwiz.net/techtips/sql-injection.html

--
Greetings from Troels Arvin, Copenhagen, Denmark


Bertel Lund Hansen (03-01-2005)
Kommentar
Fra : Bertel Lund Hansen


Dato : 03-01-05 11:15

Troels Arvin skrev:

>Prøv at se denne side, som forekommer at have en usædvanlig grundighed:

Det er en fin beskrivelse.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste