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