Finne hvilken side som poster data

kongen

kongemedlem
Jeg har en side med skjema, skjema.php, med action=prosess.php

På prosess.php så vil jeg verifisere at data faktisk kommer fra skjema.php, men $_SERVER['HTTP_REFERER'] virker ikke.

Hvordan kan jeg finne ut hvilken side som poster data til prosess.php ?
 

kongen

kongemedlem
Folk kommer til prosess.php via skjema POST, og ikke via en link. Skal HTTP_REFERER også virke via skjema POST?
 

adeneo

Medlem
Ja, det skal så vidt jeg vet virke med alle redirects, også POST'ing fra et form osv. så lenge referrer ligger i headern.

Når det er sagt, så er dette en av de dårligste sikkerhetssjekkene som finnes.
Referrer kan enkelt settes i header når man bruker ting som cURL, som du har lært å bruke i en annen tråd, og man kan altså svært enkelt spoofe referrer ved å sette den til akkurat hva man vil.
Det er ingen garanti for at referrer alltid sendes, det er opp til nettleseren å sende slikt, og med for eksempel SSL så funker normalt http_referer dårlig osv. slik at det er en upålitelig og unødvendig sjekk.
 

Pong

Jeg selger sʇɥƃıluʍop :)
Som adeneo skriver: HTTP_REFERER er vel noe browseren sender, så du kan i teori ikke stole på det.

Jeg spør derfor: hvorfor er dette viktig?
Det skal i grunnen vel være det samme hvor dataene kommer fra.
 

adeneo

Medlem
Legg til et skjult input element istedet, bot'er vil fylle ut dette, og du kan bare sjekke om det er tomt på serversiden.

Dette er såkalt "unobtrusive" validering som brukeren aldri ser, og det er pålitelig ettersom en bruker aldri vil fylle ut et element som ikke er synlig, og det luker ut 95% av bot'er.
 
Topp