Sikkerhet i PHP gjort lettere
Når du utvikler en nettside, enten det er en applikasjon, rammeverk, bibliotek — hva som helst — er det desidert viktigste sikkerhet. Likevel er det mange som tar snarveier, og slurver seg unna. Om du vil unngå å stå med skjegget i postkassen den dagen du blir angrepet via XSS, CSRF eller SQL injections bør du følge med nå.
Hvorfor?
Du skal aldri stole på brukerne dine. Selv om det er familien eller vennene dine. Årsaken er at enkelte personer kan utnytte sårbarhetene i systemet ditt, som kan resultere i at sensitiv informasjon blir samlet, slettet eller endret. Det kan resultere i at noen tar fysisk kontroll over nettsiden din.
Hva kan man gjøre?
Ved å følge prinsippet ovenfor, må du sørge for å validere all data du skal hente inn fra brukerne. Du bør også sanitere data.
Validering: sjekke om data er av riktig type, for eksempel en ordentlig E-postadresse eller postnummer.
Sanitering: manipulasjon av data, som for eksempel å fjerne enkelte tegn/bokstaver/tall og så videre.
I PHP får vi tilgang til brukerdata via super-globalene $_GET, $_POST, $_COOKIE, $_SERVER og $_SESSION.
Her kan brukere bokstavelig talt skrive hva de vil, og det kan betyr store følger om du ikke sjekker dataene ordentlig.
Løsningen
Jeg har skrevet et bibliotek i PHP kalt «PHP Security Wrapper«. Dette biblioteket tar seg av brukerdata fra GET, POST, SERVER og COOKIE, samtidig som du får muligheten til både å validere og sanitere dem.
Biblioteket er selvfølgelig gratis, og oppdateres hyppig. Om du ønsker å lære mer om dette biblioteket kan du lese forumtråden jeg postet på Norsk Webforum, sjekke ut nettsiden og lese dokumentasjonen.
Det er ikke meningen at dette blogginnlegget skulle ta for seg hvordan du kan sikre deg mot angrep, men om du ønsker å lese videre på emnet kan du sjekke ut følgende linker:
- http://phpsec.org/projects/guide/
- http://ilia.ws/files/phpworks_security.pdf
- http://www.symantec.com/connect/fr/articles/securing-php-step-step
- http://www.phparch.com/2010/07/08/never-use-_get-again/
- http://www.phpfreaks.com/tutorial/php-security
- http://articles.sitepoint.com/print/php-security-blunders
- http://php.net/manual/en/security.php
- http://php-security.org/category/articlesandtools/index.html
-
Sindre
-
Sindre
-
davidsteinsland
-
Odd Bjørn
-
David Steinsland