Finne hvilken side som poster data

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 ?

Bump

Da må du finne ut hvorfor HTTP_REFERER ikke virker.

Den er blank

Jeg ser at du skriver det, men dersom brukeren kommer fra en annen side, så skal den jo ikke være blank

Referrer Testing ?

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

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.

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.

Det er viktig for å redusere bots å poste data inn i systemet.

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.

Det kan kanskje være en løsning ja, jeg skal gjøre dette. Takk for tipset :slight_smile: