Sikkerhed ved arbejde med PHP og MySQL.

Tags:    php

Er der ikke en der kan komme med en "Sikkerhed for dummies" vedr. PHP og MySQL til en rooki.

Jeg har lavet en side hvor man logger ind og kan gemme oplysninger som ikke skal ses af andre.

Hvordan sikre man at andres login (mine brugere) ikke misbruges?
Hvordan sikre jeg, at mine php filer ikke manipuleres af andre?
Hvordan sikre jeg at input ikke laver fuck ups i databasen (HTML tags ' " \\ / osv.)


Er der andet jeg skal være opmærksom på vedr. sikkerhed?

Jeg vil desuden gerne kunne sende en automatisk mail til nye bruger med et auto generet password. Nogen der har et hint vedr. auto sending af mails samt generering af password?

Min side kan findes på: http://borg.users.whitehat.dk

På forhånd tak.

Leif

[Redigeret d. 26/05-03 14:28:31 af Leif]

[Redigeret d. 26/05-03 15:04:41 af Leif]



9 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Jeg svarer uden at have genlæst den anden artikel:
De to vigtigste (og eneste jeg lige kan komme på)
-Du skal huske addslashes funktionen på alt det data du sender til mySQL - ellers kan en angriber udføre de sql statements han/hun ønsker.
-Du skal også gerne strippe HTML tags, da man ellers kan udføre javascript som i teorien vil kunne sende eventuelle cookies med kodeord videre. Kig på www.php.net/htmlspecialchars



[Redigeret d. 26/05-03 14:49:36 af Thomas (Darkstar)]



Er der ikke en der kan komme med en "Sikkerhed for dummies" vedr. PHP og MySQL til en rooki.

Jeg har lavet en side hvor man logger ind og kan gemme oplysninger som ikke skal ses af andre.

Hvordan sikre man at andres login (mine brugere) ikke misbruges?
Hvordan sikre jeg, at mine php filer ikke manipuleres af andre?
Hvordan sikre jeg at input ikke laver fuck ups i databasen (HTML tags ' " \\ / osv.)


Er der andet jeg skal være opmærksom på vedr. sikkerhed?

Jeg vil desuden gerne kunne sende en automatisk mail til nye bruger med et auto generet password. Nogen der har et hint vedr. auto sending af mails samt generering af password?

På forhånd tak.

Leif

[Redigeret d. 26/05-03 14:28:31 af Leif]

Ok fundet denne om sikkerhed http://www.udvikleren.dk/article.php?aid=103&techid=6

Dog vil jeg gerne høre om der er andre kommentar
Leif



Jeg svarer uden at have genlæst den anden artikel:
De to vigtigste (og eneste jeg lige kan komme på)
-Du skal huske addslashes funktionen på alt det data du sender til mySQL - ellers kan en angriber udføre de sql statements han/hun ønsker.
-Du skal også gerne strippe HTML tags, da man ellers kan udføre javascript som i teorien vil kunne sende eventuelle cookies med kodeord videre. Kig på www.php.net/htmlspecialchars



[Redigeret d. 26/05-03 14:49:36 af Thomas (Darkstar)]

Har du et par eksempler?

Leif



Tjaa,
Sårbar kode:
Fold kodeboks ind/udKode 

Her tager vi blindt info fra brugeren og sender direkte i databasen
Hvis vi som brugernavn indtastede:
Fold kodeboks ind/udKode 

Så ser vores SQL statement såleds ud:
Fold kodeboks ind/udKode 

hvilket bliver fortolket som 2 queries. Et der selecter, og et der sletter bruger tabellen.
med Addslashes var dette undgået, og brugeren havde fået smidt en fejl i hovedet.

Mvh,

Thomas Nielsen



Tjaa,
Sårbar kode:
Fold kodeboks ind/udKode 

Her tager vi blindt info fra brugeren og sender direkte i databasen
Hvis vi som brugernavn indtastede:
Fold kodeboks ind/udKode 

Så ser vores SQL statement såleds ud:
Fold kodeboks ind/udKode 

hvilket bliver fortolket som 2 queries. Et der selecter, og et der sletter bruger tabellen.
med Addslashes var dette undgået, og brugeren havde fået smidt en fejl i hovedet.

Mvh,

Thomas Nielsen


Hej Thomas

Jeg kan godt se hvad du mener.

Men kan det være at, PHP selv laver addslashes i en nyere version. Jeg har nu selv forsøgt at slette tabeller på den beskrevne måde - uden held *S*

Jeg kan også se, at der har været andre i samme ærende - også uden held *S*

Når jeg ser på den sql streng der bliver sendt så ser den nemlig sådan ud

Fold kodeboks ind/udKode 


Leif



Jeg tror ikke adslashes er nødvendig da de i så fald ville blive fjernet inden de ryger ind i databasen

Hvis SQLsætningen kommer til at se sådan ud med addslashes:
Fold kodeboks ind/udKode 

vil den gemme
Fold kodeboks ind/udKode 

og ikke det som den gør:
Fold kodeboks ind/udKode 




Jeg tror jeg har fundet svaret på, om addslashes er nødvendig i dette stykke af php.ini:
Fold kodeboks ind/udKode 
Deres beskrivelse af hvad Magic quotes betyder er ikke så god, men jeg tror det betyder at addslashes er unødvendig



Hej Jesper

Det lyder jo meget rigtigt. Dog kan det være nødvendigt selv at lave addslashes hvis disse parametre ikke er sat. Eller er det nogen jeg kan sætte ved min udbyder.

Leif



I stedet for addslashes bør man bruge mysl_escape_string, da den er specifikt udviklet til at escape (My)SQL-farlige tekster.

Thus, I conclude
\\/ XyborX
/\\ www.xyborx.dk



t