m_soderlundMedlem sedan sep. 20024 733 inlägg
Jag skulle vilja kolla upp referer till en viss sida på en domän och använder följande kod för det:
<?
if ($_SERVER["HTTP_REFERER"] != 'http://www.doman.org/index.php?p=' . $_GET['p'] ) {
die('error!'); }
?>
Problemet som uppstår är att det blir error oavsett om referern är doman.org eller en annan - det verkar vara $_GET['p'] som strular till det. Adressen på referern som tillåts kommer att vara i stilen http://www.doman.org/index.php?p=111. Mycket tacksam för hjälp.. :)
K@llenMedlem sedan mars 20032 654 inlägg
Jag avråder dig att använda $_SERVER["HTTP_REFERER"] eftersom den många gånger kan vara tom.
m_soderlundMedlem sedan sep. 20024 733 inlägg
Vad bör man använda i så fall? Såvitt jag vet är HTTP_HOST, SERVER_NAME etc. inte referer-servervariabler om du förstår vad jag menar.. ;)
K@llenMedlem sedan mars 20032 654 inlägg
m_soderlund skrev:
Vad bör man använda i så fall? Såvitt jag vet är HTTP_HOST, SERVER_NAME etc. inte referer-servervariabler om du förstår vad jag menar.. ;)
Det finns inget riktigt bra alternativ. Nu vet jag inte hur din applikation fungerar. Skulle det fungera att ta ut varifrån man kommer på följande vis i din applikation:
http://www.webforum.nu/showthread.php?s=&threadid=100537&forumid=151
Det funktionen returnerar får du skicka med till nästa sida manuellt på något sätt.
m_soderlundMedlem sedan sep. 20024 733 inlägg
Det blir tyvärr lite krångligt.. Om än en smidig lösning K@llen!
Men.. om man idag vill göra ett script som blockar alla andra sajter än min egen (jag vill blocka formulärdata som sänds från andra sajter till min sajt) - hur gör man då? :)
tydalMedlem sedan juni 20033 788 inlägg
Det du kan göra är att tvinga personen att besöka din site genom att förse honom/henne med en hash. Jag beskrev det på ett annat forum idag:
På sidan som skapar formuläret tar du fram ett slumptal, aktuellt datum och klockslag samt ett lösenord som även finns på sidan som ska ta emot formuläret. Du sätter ihop dessa värden till en sträng som du matar md5-funktionen med. Resultatet du får skickar du tillsammans med slumptalet och datumet/tiden som hidden-fält i formuläret.
På sidan som tar emot formuläret tar du emot slumptalet, datumet/tiden och sätter ihop det till en sträng tillsammans med lösenordet och matar md5-funktionen med det. Resultatet jämför du med det resultat som kom med formuläret. Får du samma resultat vet du att besökaren har fått sina värden från din sida och att de inte är ändrade. Du vet därmed att tiden stämmer och kan kolla att den inte är för gammal.
m_soderlundMedlem sedan sep. 20024 733 inlägg
Ok tydal.. det var lite overkill men helt klart något att tänka på.. men fortfarande inget enklare sätt? :)
tydalMedlem sedan juni 20033 788 inlägg
Skulle vara sessioner i så fall.
aasahMedlem sedan mars 20033 451 inlägg
tydal skrev:
... På sidan som skapar formuläret tar du fram ett slumptal, aktuellt datum och klockslag samt ett lösenord som även finns på sidan som ska ta emot formuläret. ....
Du vet därmed att tiden stämmer och kan kolla att den inte är för gammal.
Intressant ide! :)
Vad skulle du räkna som "för gammalt"? :q
tydalMedlem sedan juni 20033 788 inlägg
Tiden i det här fallet är ju från det att formuläret laddas till dess är ifyllt och postat, så det beror ju på hur lång tid besökarna förväntas ägna åt fylleriet.
En variant är ju att logga hasharna på servern så varje hash bara kan användas en gång.
aasahMedlem sedan mars 20033 451 inlägg
tydal skrev:
Tiden i det här fallet är ju från det att formuläret laddas till dess är ifyllt och postat, så det beror ju på hur lång tid besökarna förväntas ägna åt fylleriet....
Plus tiden det tar att skicka formuläret fram och tillbaka. Och då är ju frågan om det går att komma på någon bra tidsåtgång som särskiljer smalbandet som laddar från den avsedda sidan och där användaren kanske fyller i formuläret eftertänksamt eller skriver långsamt, från den flyhänte på snabbt bredband vilken skickar från otillåten server? :q Det verkar inte helt enkelt i mina ögon, därav frågan.
Sedan begriper inte jag riktigt varför tiden behövs? Det hemliga lösenordet gör ju att man vet varifrån sidan kommer... eller? :q Vad är det jag missar? :q
tydalMedlem sedan juni 20033 788 inlägg
Det du missar är att utan tidsaspekten, eller loggning av godkända hashar på servern, så är en hash giltig hur länge som helst och hur många gånger som helst.
Dvs, den som nu vill göra ett eget formulär behöver bara ta fram originalformuläret och plocka ut hashen en gång och så är det fritt fram.
aasahMedlem sedan mars 20033 451 inlägg
Ah! Självklart egentligen... Tack! :D