04. januar 2014 - 10:55Der er
10 kommentarer og 1 løsning
Validering af input
Kære eksperter. Jeg skal til at lave et site for en virksomhed - det er hverken PET eller Danske bank, men kunden er naturligvis alligevel interesseret i, at brugere ikke kan queste fjendtlige strenge til databasen. Jeg bruger prepered statements og javascript-validering client-side, men er kommet i tvivl om valideringsbehovet serverside. Nogle steder læser jeg at prepered statements er rigeligt til at forhindre injection, andre steder at man også skal validere udefrakommende indput, selvom man bruger PS. I givet fald hvordan skal jeg validere serverside. Der er vil både være tekst og talstrenge i de input, som skal sendes via søgeformularerne. Håber på afklaring.
Det eneste prepared statements reelt gør er at sikre imod SQL Injections ( http://www.web-dev.dk/post/2008/07/14/SQL-injections-mere-end-bare-et-pling.aspx ) samt håndtering af "farlige" tegn der fx kan escape din SQL og har som sådan intet med validering at gøre. Du bør derfor validere alle dine data serverside såvel som clientside ligesom du ved output af data skal html-encode det (medmindre du selvfølgelig forventer at det er HTML output).
Keysersoze: Jeg er lidt usikker på hvad det er for trusler, jeg skal være opmærksom på - og validere for serverside, når jeg bruger prepered statements. Kan du hjælpe SpørgeJørgen lidt her?
Synes godt om
Slettet bruger
04. januar 2014 - 13:36#4
Jeg vil mene at det er fint at validere for SQL-injections serverside, så længe at strenge er de eneste input-data - hvis det kun er sikkerheden der bekymrer dig. Selvfølgelig skal du så også validere for specialtegn hvis du ikke vil have dem, men de udgør ikke en trussel.
TIl gengæld bør du sikre dig mod XSS når du udskriver brugernes input igen. Dette kan gøres ved htmlentities() med et par flags.
Generelt bør du aldrig stole på input fra client side validering, da man ikke behøver ret meget snilde for at slå validering fra som bruger.
Jeg vil klart anbefale at input validere som beskyttelse mod XSS.
En passende escaping af output kan naturligvis beskytte mod at JavaScript eksekveres, men det beskytter ikke mod at faa et daarligt ry fordi brugerne kan se kode.
Enig med arne_v dog med den tilføjelse at du serverside eventuelt kan dele din validering op i 2 logiske dele - den ene er hvad der svarer til din clientside validering såsom "udfyld din email", "kun tal", "max 10 karakterer" osv og give brugeren feedback på det mens den mere kritiske validering som hvis man fx vil validere imod html og JavaScript som input bare resulterer i "fejl".
jeg kan godt smide et svar, men jeg synes ikke at jeg er den eneste som har bidraget her
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.