Alain: kann man ein perl.cgi täuschen?remonte_address

Hallo ich weiss das thema ging schon oft durch die runde,aber ich denke
diese frage kam noch nicht.
Ich wollte mal wissen bei einer variable wie dieser

#!/usr/bin/perl
my $ip = $ENV{'REMOTE_ADDR'};

my $allowips = '23.34.24.23';
print "Content-type: text/html\n\n";

if ($ip ne $allowips)
{
print "access denied\n";
}
else
{
print "ip ok\n";
}
-------------------

wenn das cgi nun test.cgi heisst und man das cgi mit einer methode
wie test.cgi?REMOTE_ADDR=23.34.24.23 aufruft die ip dann nicht als
23.34.24.23 vorgetäuscht wird?
Grüsse vom Alain

  1. Hi,

    wenn das cgi nun test.cgi heisst und man das cgi mit einer methode
    wie test.cgi?REMOTE_ADDR=23.34.24.23 aufruft die ip dann nicht als
    23.34.24.23 vorgetäuscht wird?

    Der ENV-Hash enthält die Environment Variablen des CGI-Scripts. Eine davon ist der _komplette_ Querystring. Teile des Querystrings tauchen _nicht_ im ENV-Hash auf.

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Hi,

      Der ENV-Hash enthält die Environment Variablen des CGI-Scripts. Eine davon ist der _komplette_ Querystring. Teile des Querystrings tauchen _nicht_ im ENV-Hash auf.

      ok,aber ich habe hier auch mal gelesen dass man anscheinend den HTTP_REFERER täuschen kann und der besteht doch auch
      in einer Environment Variablen?
      Grüsse
      Alain

      1. Hallo Alain,

        ok,aber ich habe hier auch mal gelesen dass man
        anscheinend den HTTP_REFERER täuschen kann und
        der besteht doch auch in einer Environment
        Variablen?

        Das hat andere Ursachen. Der Referer ist ein
        HTTP-Header, und den Inhalt eines HTTP-Headers kann
        man nahezu beliebigen veraendern.

        Gruesse,
         CK

        --
        Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.
        1. Hallo,

          Das hat andere Ursachen. Der Referer ist ein
          HTTP-Header, und den Inhalt eines HTTP-Headers kann
          man nahezu beliebigen veraendern.

          diese frage stellte sich mir eigentlich,weil ich ein paar perl.cgis
          kenne die trotz dieser IP sicherheits variable ge-exploitet wurden mit erfolg und
          vermutlich auch ohne proxy der diejenige Ip besass um das script zu manipulieren.
          Der sicherheitscode sitzt meistens auch ganz am anfang vom script.
          Aber ich vermute mal dass dies nicht mit einem client wie IE oder NS möglich ist.
          Gruss vom Alain

          --
          ..."Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)
      2. Hi,

        die IP wird vom Client nicht explicit übergeben, sie steht einfach so zur Verfügung (weil sie intern im TCP/IP-Protokoll steht), der Server speicehrt diese in eine Umgebungsvariable. Würde im Protokoll eine falsche IP stehen, kämen die Daten nicht beim Client an (ich glaube sogar dass dann nicht mal eine Verbindung aufgebaut werden könnte)...

        Der Referer steht in einer Zeile des HTTP-Headers, den der Browser willkürlich festlegen könnte, im Normalfall aber die letzte aufgerufene Seite angibt. Dieser Referer ist nicht unbedingt notwendig, um eine Verbindung herzustellen.

        E7

  2. Hallo Alain,

    my $ip = $ENV{'REMOTE_ADDR'};

    Denk daran, dass es Proxies gibt -- und auch
    durchaus transparente.

    wenn das cgi nun test.cgi heisst und man das
    cgi mit einer methode wie
    test.cgi?REMOTE_ADDR=23.34.24.23 aufruft die
    ip dann nicht als 23.34.24.23 vorgetäuscht wird?

    Nein.

    Gruesse,
     CK

    --
    Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.