Avatar billede hewa Nybegynder
23. januar 2007 - 20:26 Der er 13 kommentarer og
1 løsning

Sikkerhed ved bruger-input

Hvis vi snakker sikkerhed, når brugere har mulighed for at skrive i felter til databasen, er der så brug for andet end strip_slashes og add_slashes?

Her tænker jeg på, at en eller anden ikke skal have mulighed for at lave en "ond kode" i et bruger-felt. Her snakker vi PHP og mysql.
Avatar billede windcape Praktikant
23. januar 2007 - 20:39 #1
www.php.net/mysql_real_escape_string

eller endnu bedre, brug prepared statements i følgende:

www.php.net/mysqli
www.php.net/PDO

Derudover skal du validere din input data, ikke bare escape "ond" kode.
Avatar billede windcape Praktikant
23. januar 2007 - 20:39 #2
til validering:

www.php.net/filter
og
www.php.net/ctype

Du bør typecast alt data når du kan, enten via. direkte typecast, sprinf, eller prepared statements.
Avatar billede windcape Praktikant
23. januar 2007 - 20:40 #3
strip/addslashes beskytter faktisk slet ikke :-) Det er ihvertfald kun mod diverse script-kiddies.
Avatar billede hewa Nybegynder
23. januar 2007 - 20:49 #4
WOUW... det vil tage mig en måned at gå igennem, alt det du har sendt :)
Nu er det jo ikke NASA, jeg har med at gøre :) så hvis du skal koge alle disse sider ned til det vigtigste, du kender til sikkerhed, hvordan lyder det så?

Kan du give et eksempel med på det, du forslår, kunne det være kanon!!
Avatar billede simplus Nybegynder
23. januar 2007 - 21:13 #5
Prøv at kigge på htmlentities, ved dog ikke om det er 'bedre' end en mysql_real_escape_string()

php.net/htmlentities

måske kan windcape lige komme med en kommentar om hvilken der er bedst? :-)
Avatar billede windcape Praktikant
23. januar 2007 - 21:45 #6
htmlentities er noget HELT andet. har intet med string_escpe at gøre :p
Det laver bare html om til entities, dvs. < til &lt; og > til &gt;

-

Summa summarum: typecasting er vigtig, dvs. du ikke tillader "en","to" osv. for et felt som skal indeholde 1,2,3 etc.

At bruge sprintf er meget smart, se f.eks. hvordan jeg gør her:

http://www.dragons-lair.org/module/repository/PHP/Guestbook/Guestbook.php#72
Avatar billede windcape Praktikant
23. januar 2007 - 21:55 #7
navne: ctype_alnum

adresser: del op i adresse og nummer, og brug så alnum igen, og typecast nummeret til integer

telefon numre: ctype_digit + størrelse check med strlen
Avatar billede hewa Nybegynder
23. januar 2007 - 23:10 #8
Det her begynder at blive noget avanceret... kan jeg ikke få at vide på en enkel måde (på danske), hvad jeg bør gøre for at sikre mig i bruger-felter, uden det er NASA sikkerhed? ;-)
Avatar billede windcape Praktikant
23. januar 2007 - 23:11 #9
Hvis du synes dette her er advanceret, bør du SLET IKKE kode php. Dette her er så grundlæggende som det kan blive.
Avatar billede hewa Nybegynder
23. januar 2007 - 23:20 #10
Okay, det skal jeg huske. Tak for hintet.
Avatar billede hewa Nybegynder
04. februar 2007 - 15:01 #11
windcape, jeg håber, du lige vil give mig den sidste hjælp :)

Hvis jeg bruger mysql_real_escape_string, kan jeg så slippe for at bruge htmlentities, eller skal man bruge begge to?

Hvis jeg bruger dit eksempel med sprintf($sql,mysql_real_escape_string($name)), er det så kun, når jeg gemmer i databasen, jeg bruger det, eller skal jeg trække ud på samme måde?
Avatar billede hewa Nybegynder
15. februar 2007 - 10:53 #12
windcape, du ydede en god hjælp så smid et svar, så er der point til dig!!
Avatar billede hewa Nybegynder
14. december 2007 - 18:14 #13
windcape, du fik aldrig dine point den gang, smider du lige et svar, så du kan få dem?
Avatar billede hewa Nybegynder
01. januar 2008 - 01:48 #14
Oki, jeg lukker. Godt nytår :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester