David Steinsland – informatikkstudent og webutvikler

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:

  • Sindre

    Sikkerhet er viktig :-) Desverre er det ofte sånn at det nedprioriteres.

  • Sindre

    Litt teit at jeg ikke får ha link til nettsiden min i kommentaren min :S

  • davidsteinsland

    og ikke minst et meget interessant tema!

  • Odd Bjørn

    Hvor laster jeg ned bruker systemet ditt vil teste det på hjemmesiden min