[CGI] Refer werkt niet goed

Pagina: 1
Acties:

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 11:49

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Hi,
Ik gebruik een aantal CGI scripts om remote de HTML bestanden te kunnen aanpassen.
Het inloggen gebeurt dmv een username/password check en een refer check.

Echter zodra ik vanaf en HTTPS verbinding wilkomen, krijg ik een bad refer.
Is dat een limitatie van perl, een fout in het script of een 'bug' in de perl interpreter van het OS (NW5.1).

Dit is (een stuk van) de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sub get_form_data {

@okaydomains=("http://www.domein.com"); 
  if (@okaydomains == 0)
     {return;}
  $DOMAIN_OK=0;
  $RF=$ENV{'HTTP_REFERER'};
  $RF=~tr/A-Z/a-z/;
  foreach $ts (@okaydomains)
   {
     if ($RF =~ /$ts/)
    { $DOMAIN_OK=1; }
   }
   if ( $DOMAIN_OK == 0) {

        print "Content-type: text/html\n\n";
        print "<title>Error!</title>";
        print "<body bgcolor=\"\#ffffff\" text=\"\#000000\">";
        print '<h1>Error</h1>',"\n";
        print '<hr>';
        print 'Bad Referer';
        print '</html>';
        exit 0;
    }

Zodra ik dus 'http:/www.domein.com' wijzig in 'https://www.domein.com' dan krijg ik steevast een bad refer.
Doe ik iets fout ??

Braaikamer - Smoke&BBQ


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

En als je die Referer es afdrukt ?
Klopt het dan dat ie bad is?

  • Sabbi
  • Registratie: December 2000
  • Laatst online: 10:11

Sabbi

je denkt aan mij.

joh, dat gaat idd fout jah,
je script vergelijkt namelijk gewoon
http:\\www.bla.nl met https:\\www.bla.nl
en die zijn niet hetzelfde...

je zou kunnen proberen om de http headers van de url af te strippen, of de ip van de refferer te checken, of gewoon in je trusted domains ook de https varieteit zetten...

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 11:49

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Sorry ik kan jullie mniet helemaal volgen.
Nog even ter verduidelijking.

Op http://www.domein.com staat een form.
Als ik van daaruit inlog gaat het goed.

Echterm als ik het form benader via HTTPS en ook in het form neerzet dat de CGI te vinden is op HTTPS:// .... en in het script ook nog het OKAY domain wijzig naar HTTPS geeft 'ie dus een bad refer.

Ik zal vanavond (kan vanaf hier het script niet editten) een testen om de refer te laten zien.

Enne .. domme vraag, hoe strip ik de HTTP header eraf?

Braaikamer - Smoke&BBQ


  • Sabbi
  • Registratie: December 2000
  • Laatst online: 10:11

Sabbi

je denkt aan mij.

Je code doet letterlijk:

if ("https://www.bla.nl" == "http://www.bla.nl")

natuurlijk gaat dat mis...

je zou btw ook kunnen doen dat je in je @domain array alleen "www.bla.nl" zet en kijkt of die ergens in je in je referrerstring zit...

maar IP-checken is trouwens veiliger...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 15 oktober 2001 10:24 schreef Sabbi het volgende:
maar IP-checken is trouwens veiliger...
Dat gaat wat lastig met een referer ;)

Maarreuhm, koffie: Druk zowiezo die referer af als je hem wilt controleren.. .Dat scheelt een hoop gezoek.

  • Sabbi
  • Registratie: December 2000
  • Laatst online: 10:11

Sabbi

je denkt aan mij.

hoezo kan je geen dns-check doen?
moet toch niet zo lastig zijn, kan zelfs gewoon even 'host $referrer' draaien en kijken wat voor ip eruit komp...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 15 oktober 2001 10:30 schreef Sabbi het volgende:
hoezo kan je geen dns-check doen?
moet toch niet zo lastig zijn, kan zelfs gewoon even 'host $referrer' draaien en kijken wat voor ip eruit komp...
Right...
$referer is een url, ala 'http://.../etc/'
en dat ga je aan host voeren?
Die vindt dat dacht ik niet zo geschikt

  • Koffie
  • Registratie: Augustus 2000
  • Laatst online: 11:49

Koffie

Koffiebierbrouwer

Braaimeneer

Topicstarter
Op maandag 15 oktober 2001 10:24 schreef Sabbi het volgende:
Je code doet letterlijk:

if ("https://www.bla.nl" == "http://www.bla.nl")

natuurlijk gaat dat mis...
[..]
Nogmaals .... als ik vanaf een HTTPS binnenkom, laat ik het form HTML bestand ook naar HTTPS .. cgi... bladiebla verwijzen.
En vervolgens pas ik het script ook aan dat 'ie kijkt of de referer vanaf HTTPS://domein.com komt.

Anyway, ik zal eens met de referer rommelen en laten afdrukken om te kijken hoe n wat.

Braaikamer - Smoke&BBQ

Pagina: 1