PHP, MySQL, CSS, XHTML, JavaScript
05. Feb. 2006
PHP / MySQL
Den største forskjellen mellom de som kan programmere i PHP og de som ikke kan det er nok sikkerhet. Det er mange som greier å få ting til å fungere i PHP, men ikke alle som greier å ha dette sikkert, og fungere opptimalt. Det finnes jo også copy&pastere og de som gjør alt for mye koding i forhold til jobben de skal utføre, men det er jo en annen sak.
Poenget i denne posten er at alle skal kunne forstå hvor viktig det er med sikkerhet! En oppfordring til alle som eventuelt i fremtiden skal leie noen til å programmere webside til seg; Vit at de prioriterer sikkerhet! Derfor kan du lese igjennom denne posten, skjønne hva som gjør kodene til sikker og kontrollere kodene som blir skrivet om de er sikker.
Alle som skriver koder selv burde også lese igjennom for å kanskje plukke opp noen små triks.
Validering av input er en meget viktig ting innen sikkerhet. Dette gjelder mest av alt innen bruker tillagt informasjon. Statisk informasjon trengs selvfølgelig ikke å valideres. Med statisk informasjon mener eksempel når du skal legge til info i database:
Der trenger du ikke validering siden det ikke er noe som helst mulighet til å endre "STATISK". Hadde dette vært brukt med bruker innlagt informasjon eller la oss si over URI; skal det valideres for å hindre sql-injections.
Jeg kan fyre opp et kjapt eksempel på dette for at dere skal skjønne va SQL-Injections er:
Du har et loginsystem igjennom MySQL der du bruker følgende spørring:
Da kunne du logget deg inn over denne adressen: login.php?user=Brukernavn&pass=Passord . Brukernavnet er det ikke noe vanskelig og finne ut. Kanskje siden din har statestikk over hvem som er medlem o.l. Så la oss si at det er en bruker som heter Petter3. Da kunne hvem som helst skrive inn denne adressen login.php?user=Brukernavn%20'%20-- . Da "--" betegner en kommentar i MySQL. Dette er et meget lite eksempel på hvordan besøkende kan utnytte usikre system. Dette hadde vært forhindret med funksjonen addslashes() (eller htmlspecialchars()) i php, som bryter av ' med \ (= \') og da ville kommentaren aldri blitt satt. For å forhindre SQL-Injections er det meget enkelt, bare du tar noen forholds regler. En god regel er å kjøre igjennom en funksjon som renser stringen du kommer med. En god slik funksjon må kjøre strengen med mysql_real_escape_string() som renser stringen bra. Du kan bruke noe som er meget god. (Les om mysql-real-escape-string.)
Her er en god funksjon som renser det meste:
Uansett hvor det er så kan du ta forbehold om at input skal valideres. Hvor det enn er; er det mulighet for at noen kan utnytte det, sperr muligheten for det. Du kan ikke være lat når det kommer til webprogrammering.
Vi kan ta som eksempel i et registrerings skjema. Der har vi mange forskjellige felter som skal inn, derfor må vi ha egen validering for det meste. Du har e-post; kontroller om det er en epost som blir skrevet inn. Du har telefon nummer; kontroller at det kun er tall.
- Fortsettelse følger
Innlegget ble postet 05.02.06 12:41 og ligger under kategorien PHP / MySQL. Du kan abonnere på kommentarene ved å bruke RSS 2.0 feed. Du kan legge til kommenter, eller trackback fra din blogg/side.
Hei! Takk for det, fortsettelsen kommer vel snart kan jeg tenke meg.
Det er rett det du skriver. magic_quotes_gpc er på slått i php som default. magic_quotes_gpc escaper automatisk ' og " i alle request elementer, GET og POST osv.
Det er kanskje et litt for kjapt og lite gjennomført eksempel på hva SQL-injection er, men jeg tror det skal gi et overblikk.
Mikaelb skrev dette 25 Februar, 2006 17:58 - Sitér
Sider laget i asp er meget utsatt for sql injection fordi der er det ikke noen automatisk filtrering som php har.
Etter min erfaring så er over 50% av alle asp sider utsatt for sql injection.
Dag Erik skrev dette 26 Februar, 2006 02:56 - Sitér
Nå har ikke jeg noen erfaring innen ASP, men om det stemmer så er jo det veldig dårlig. Men det er faktisk mange PHP sider som også er åpne for SQL-injections. Dette er da helst sider som er programmert av "små" nybegynnere som har feile prioriteringer.
Så for eksempel en kode til noe som skulle bli et nytt internett-samfunn. Der var kodene ufattelig usikkre og åpne for SQL-Injections som bare det.
Var vel heller ikke så lenge siden noen av gutta på #NWF hadde funnet et hull i VGLista Topp20 heller, nettopp med SQL-injections. Når de "store-gutta" gjør slike feil, begynner mann og lure!
Mikaelb skrev dette 26 Februar, 2006 03:05 - Sitér
Hi!
I want to make better my SQL knowledge.
I red so many SQL resources and want to
get more about SQL for my position as db2 database manager.
What would you recommend?
Thanks,
Werutz
werutzb skrev dette 8 Oktober, 2008 04:00 - Sitér
carmella bing elektronik kard big huge boobs
Fausaniarkasp skrev dette 11 Oktober, 2008 20:22 - Sitér
Î÷åíü ñóïåðñêîå ìåñòî, ìíå òóò ïîíðàâèëîñü, ïðàâäà...
Ñòîëüêî âñåãî ïîëåçíîãî è èíòåðåñíîãî, ÿ òóò çàäåðæóñü íà äîëãî.
ïîðíî skrev dette 16 Oktober, 2008 03:26 - Sitér
Test message
Sorry me noob...
Feekslequesty skrev dette 20 Oktober, 2008 07:26 - Sitér
There was this guy see.
He wasn't very bright and he reached his adult life without ever having learned "the facts".
Somehow, it gets to be his wedding day.
While he is walking down the isle, his father tugs his sleeve and says,
"Son, when you get to the hotel room...Call me"
Hours later he gets to the hotel room with his beautiful blushing bride and he calls his father,
"Dad, we are the hotel, what do I do?"
"O.K. Son, listen up, take off your clothes and get in the bed, then she should take off her clothes and get in the bed, if not help her. Then either way, ah, call me"
A few moments later...
"Dad we took off our clothes and we are in the bed, what do I do?"
O.K. Son, listen up. Move real close to her and she should move real close to you, and then... Ah, call me."
A few moments later...
"DAD! WE TOOK OFF OUR CLOTHES, GOT IN THE BED AND MOVED REAL CLOSE, WHAT DO I DO???"
"O.K. Son, Listen up, this is the most important part. Stick the long part of your body into the place where she goes to the bathroom."
A few moments later...
"Dad, I've got my foot in the toilet, what do I do?"
enzypeday skrev dette 23 Oktober, 2008 17:21 - Sitér