Avatar billede fynbo Nybegynder
16. maj 2006 - 14:37 Der er 15 kommentarer

header: location og http_referer

Når man bruger header("location:"); er der så nogen mulighed for at der ikke medsendes en HTTP_REFERER?

Hvis der klikkes på et banner på Site A, så ryger brugeren til Site B som via header("location") smider brugeren videre til Site C. Problemer er at http_referer er site A's adresse og ikke Site B's fordi php medsender http_referer.

Er det helt sort? :/
Avatar billede Slettet bruger
16. maj 2006 - 14:46 #1
Lav en header("Referer: http://www.dr.dk"); sammen med din redirect så mener jeg at det burde virke...

http://dk.php.net/header
http://www.faqs.org/rfcs/rfc2616
Avatar billede fynbo Nybegynder
16. maj 2006 - 14:47 #2
har jeg prøvet uden held - kan lige prøve igen, kan være jeg overså noget
Avatar billede fynbo Nybegynder
16. maj 2006 - 14:48 #3
nope, virker ikke
Avatar billede fynbo Nybegynder
16. maj 2006 - 14:49 #4
bruger denne kode til at sende en falsk header med en referer
Avatar billede fynbo Nybegynder
16. maj 2006 - 14:51 #5
<?
$_POST['version'] = '1.0';
$_POST["address"] = 'www.eb.dk';
$_POST["port"] = '80';
$_POST["file"] = '/';
$_POST["referer"] = 'http://www.dr.dk';
$_POST['method'] = 'GET';
$_POST["hostname"] = 'www.eb.dk';
$_POST['process'] = 'none';
$_POST["protocol"] = 'HTTP';
if(!empty($_POST["address"]) && !empty($_POST["port"]) && !empty($_POST["file"]))
{
    $_POST["address"] = str_replace("http://","",$_POST["address"]);

    $fsock = @fsockopen($_POST["address"], $_POST["port"],$errno, $errstr,10);

    if(!$fsock)
    {
        $error = "<b>ERROR</b><br />Could not open connection, are you sure a service is running on that port on that host? Is the host down?<br /><br />";
    } else {
        $out = $_POST['method']." ".stripslashes(str_replace(" ","%20",$_POST["file"]))." HTTP/".$_POST['version']."\r\n";
        if($_POST['version']=="1.0")
        {
            $out .= "Accept-Encoding: \r\n";
        } else {
            $out .= "Accept: */*\r\n";
            $out .= "Accept-Encoding: \r\n";
        }

        if(!empty($_POST["hostname"]))
        {
            $out .= "Host: ".stripslashes($_POST["hostname"])."\r\n";
        }
        if(!empty($_POST["referer"]))
        {
            $out .= "Referer: ".stripslashes($_POST["referer"])."\r\n";
        }
        if(!empty($_POST["cookie"]))
        {
            $out .= "Cookie: ".stripslashes($_POST['cookie'])."\r\n";
        }
        if(!empty($_POST["user_agent"]))
        {
            $out .= "User-Agent: ".stripslashes($_POST['user_agent'])."\r\n";
        }
        if(!empty($_POST["auth_string"]))
        {
            $out .= "Authorization: Basic ".base64_encode($_POST['auth_string'])."\r\n";
        }
        if(!empty($_POST["range"]))
        {
            $out .= "Range: bytes=".stripslashes($_POST['range'])."\r\n";
        }
        if(!empty($_POST["other_headers"]))
        {
            $out .= stripslashes($_POST['other_headers'])."\r\n";
        }

        $out .= "Connection: close\r\n";

        if($_POST['method']=="POST" && !empty($_POST["post_data"]))
        {
            if(!empty($_POST['content_type']))
            {
                $out .= "Content-Type: ".stripslashes($_POST['content_type'])."\r\n";
            } else {
                $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
            }
            $out .= "Content-Length: ".strlen(stripslashes(str_replace("\r\n","",$_POST['post_data'])))."\r\n\r\n";
            $out .= stripslashes($_POST['post_data'])."\r\n";
        }

        $out .= "\r\n";

        fputs($fsock, $out);

        $hostname = @getHostByAddr($_POST["address"]);
        if(!$hostname)
        {
            $hostname = htmlspecialchars($_POST["address"]);
        }

        $hostip = @getHostByName($_POST["address"]);
        if(!$hostip)
        {
            $hostip = htmlspecialchars($_POST["address"]);
        }

        fclose($fsock);
    }
}
header("Referer: http://www.dr.dk");
header("Location: http://www.eb.dk");
?>
Avatar billede fynbo Nybegynder
16. maj 2006 - 14:52 #6
hvorefter jeg redirecter. Resultatet er nu to fortegnelser i statistik systemet.. min egen referer jeg satte øverst i kodem samt den originale referer
Avatar billede olebole Juniormester
16. maj 2006 - 17:25 #7
<ole>

Dette spørgsmål lugter rigtig fælt! Hvad er det præcist, du har gang i med Ekstrabladets og DR's sites - og hvorfor forsøger du at sløre, hvad du foretager dig ved at sætte en falsk referer?

/mvh
</bole>
Avatar billede htx98i17 Professor
16. maj 2006 - 17:57 #8
Det kan da være ligemeget om spørgsmålet ser mistænkeligt ud. Vær positiv og hjælp manden i stedet for at lege politibetjent. Nu læste jeg jo lige et andet spm hvor du også, fair nok, gør opmærksom på lovgivningen. Men det er da ikke grundlag for noget her. Lav tvivlen komme ham til gode. Hvis han gør noget ulovligt skal han nok finde ud af det på et tidspunkt, hvis altså nogen finder det groft nok, hvilket jeg tvivler på.

Det fik jeg lige lyst til at skrive :-)
Avatar billede fynbo Nybegynder
16. maj 2006 - 20:56 #9
olebole> Jeg ved der er meget tekst, men prøv alligevel at læs det hele, før du begynder at spilde min tid med ligegyldige mistanker. el_barto var den første til at nævne DR, jeg brugte derefter DR i mit eksempel at holde hans idé igang. Se mine to første indlæg. Ingen navne eller websider nævnt. Tag dig sammen og hjælp eller hold dig væk langt væk. Tak!

Jeg skal have dette til at fungere, fordi vi har kunder som køber bannerplads på diverse sider, men vi har ikke lyst til at vise vores kunder hvem vi bruger som leverandør. En leverandør kan eksempelvis være advertising.com og det vil vi skjule, da vi ikke er interesseret i at de selv kontakter firmaerne for at lave aftaler uden om os.
Avatar billede olebole Juniormester
17. maj 2006 - 00:13 #10
htx98i17 >> Sikke noget vrøvl! Hvis nogen overtræder lovgivningen, overtræder de også Ekspertens regler. Hjælper man i et sådan spørgsmål, overtræder man i ligeså høj grad Ekspertens regler ... hvilket eksplicit står i de regler, du har accepteret, da du oprettede din brugerprofil.

fynbo >> Nu ikke så følsom, Basse! Jeg beskylder dig ikke for noget. Jeg læste forkert (helt korrekt, det var el_barto, der første gang brugte de domæner) og fandt, at spørgsmålet lugtede fælt. Derfor spurgte jeg, hvorfor du prøvede at sløre din IP.
Det kunne du jo bare have valgt at svare på - og påpege, at jeg havde læst forkert  :)

Hvis du ikke ønsker, jeg kommenterer på dine spørgsmål, må du oprette dem et andet sted ... den slags har du heldivis ingen somhelst indflydelse på  :)
Avatar billede fynbo Nybegynder
17. maj 2006 - 00:16 #11
olebole> du kan måske spørge på en mere diplomatisk måde. Har du iøvrigt en løsning?
Avatar billede olebole Juniormester
17. maj 2006 - 00:22 #12
Tjaaah ... storken smed mig på Østerbro - kun 100 meter fra ambassadekvarteret. Måske den havde en mening ... eller forudanelse  ;o)

Du kan ikke i et alm. PHP-dokument sætte en HTTP-header, der overskriver 'den rigtige' referer. Det kan du f.eks. heller ikke i en XmlHttpRequest fra en browser-klient.

I PHP kan du sætte en referer i en socket-forbindelse, men ikke i et dokument, der redirectes
Avatar billede fynbo Nybegynder
17. maj 2006 - 00:30 #13
Nej, pt. sender jeg brugeren videre til endnu en php-fil som via en meta-refresh sender brugeren videre. Det virker fint, er ikke særlig elegant og der er risiko for at brugeren har deaktiveret at meta-refresh kan sende ham videre.
Avatar billede olebole Juniormester
17. maj 2006 - 20:11 #14
Problemet er nok, du i din statistik lægger for megen vægt på Referer. Det gør altid tolkningen af statistikken 'vakkelvorn' ... men det er vist af en eller anden grund meget udbredt.

Hvis det var mig, ville jeg redirecte og squide på Referer'en. Hvis man absolut _vil_ have noget at kikke på i statistikken, kan man jo altid gemme en tilfældig talrække - eller vejrudsigten. Referer er aldrig til at stole på  :)
Avatar billede fynbo Nybegynder
23. maj 2006 - 11:18 #15
problemet er at kunden ikke skal se hvilken leverandør der er brugt til at vise bannere og det vises når referer følger med redirect.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester