Hvorfor kan jeg ikke stole på referrer?

php logoen
Jeg har skrevet litt om hvordan en klient(browseren) snakker med en server. Og de 2 snakker et språk med en rekke headers. Hvis jeg f.eks. ønsker å besøke bloggtips.no/hvor-sikker-er-bloggen-din-egentlig, sender min browser dette:

GET /hvor-sikker-er-bloggen-din-egentlig HTTP/1.1
Host: bloggtips.no
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; nb-NO; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5
Referer: http://skogtrollet.com
Accept-Language: nb,no;q=0.8,nn;q=0.6,en-us;q=0.4,en;q=0.2

User-Agent er navnet på browseren. Accept-Language mitt språk. Og referer er den urlen hvor jeg kommer ifra. Disse HTTP headerene blir altså sendt ut av browseren. Og siden vi kontrollerer vår browser, kan vi da naturligvis endre disse headerene som browseren sender ut.


Et realistisk eksempel
Administratoren Knut kjører en web server på sin pc. Den er tilgjengelig på internett, og har et admin panel. På admin panelet er det ingen passord sjekk. Det admin sidene sjekker, er kun referrer: Om denne inneholder

http://localhost

Blir man automatisk logget inn og kan endre ting. Var kanskje et merkelig eksempel. Men poenget er å forstå at referrer og andre HTTP headere browseren sender ut, kan forfalskes.

Vil ikke en referrer sjekk øke sikkerheten?
Mange nettsteder hvor man logger inn og skal endre ting, sjekker referrer om den inneholder noe annet en urlen til nettstedet. Dette for å forhindre at f.eks. html skjemaer fra andre steder ikke kan submitte og endre ting. Så en referrer sjekk vil faktisk øke sikkerheten, dog fins det måter å forfalske referrer også til andre brukere enn deg selv.

Men husk på at mange folk bruker slike privacy greier, slik at referrer blir renset vekk, eller også faktisk endret til “privacy blocker 2.4″ f.eks. Som en måte å reklamere for seg selv. Altså kan en referrer sjekk, stenge ute uskyldige brukere.

Bruker du å sjekke referrer hos dine applikasjoner? Hvorfor eller hvorfor ikke?

Del på Facebook
Del på Twitter
Legg til på Nettby









Dette innlegget ble skrevet på Sunday, January 18th, 2009. Og er lagret under Deilige tekster. Skumma gjennom av 1650 stykker.

4 Responses to “Hvorfor kan jeg ikke stole på referrer?”

  1. Skogtrollet » Internett er broken on January 20th, 2009 at 1:48 am

    [...] fins en rekke andre metoder for å stjele cookies. Blant annet kan den bli avslørt i din referrer. Den kan bli avslørt ved hjelp av en browser bug. Uvitende brukere kan gi den vekk med social [...]

  2. Links for 12-02-09 | norhack.org on February 13th, 2009 at 12:38 am

    [...] Hvorfor kan jeg ikke stole på referrer? por admin [...]

  3. Audun Larsen on February 18th, 2009 at 9:27 pm

    HTTP referer eller HTTP referrer som det heter (morro med skrivefeil i protokoller) er i mine øyne ubrukelig i sikkerhetsaspektet. Som du nevner er den upålitelig i den forstand at den ikke alltid er tilstede. I tillegg så er den like mye til å stole på som alt av POST / GET og COOKIE data: ikke i det heletatt. Referrer bør kun brukes til en ting, og det er til å se hvor din besøkende kommer fra. Men for all del, husk å sjekk at det er en gyldig URL som ikke inneholde HTML før du presanterer den noen sted. (LES: http://xqus.com/archive/2004/08/20/cross-site-scripting-xss-nihuo-web-log-analyzer)

  4. Skogtrollet » En referrer sjekk hjelper ikke mot hackere on September 2nd, 2009 at 10:41 pm

    [...] har tidligere skrevet om emnet, og hvorfor man ikke kan stole på referreren. Men nå skal jeg vise nøyaktig hvordan hackere klarer å omgå en referrer [...]

Legg igjen en kommentar