tramer: ip-abfrage

hallo

ich wollte eine seite erstellen auf die man nur gelangt,und dessen inhalt man nur abrufen kann, wenn man eine bestimmte IP,die vorher eingestellt wird besitzt (in diesem falle 2 IP's)
da ich weder von html noch von sonst einer porgrammiersprache weitgehende kenntnisse habe,würde ich mich sehr freuen wenn mir jemand einen volltständigen code, in dem man nur noch die beiden IP's und die seite zu der weitergeleitet werden soll eingeben muss, schicken könnte. am besten auch noch die art wie man den code einfügen muss,(ich arbeite mit dem webbuilder >dreamweaver< wenn das was hilft) wie gesagt,ich bin ein absoluter laie.
danke im voraus

mit freundlichem gruß
tramer

  1. wie gesagt,ich bin ein absoluter laie.

    Du solltest Dich mit PHP beschäftigen, hier gibt es automatisch eine Variable:

    $_SERVER["REMOTE_ADDR"]

    hier steht die IP des Besuchers.

    Nun brauchst Du nur noch eine Abrage:

    if ($_SERVER["REMOTE_ADDR"]=="192.111.111.111")
    {
      Homepage bla bla
    }
    else
    {
    Kein Zugriff
    }

    Gruss Sandra

    1. Hi,

      Du solltest Dich mit PHP beschäftigen

      warum? ;-)

      freundliche Grüße
      Ingo

    2. Hallo sandra,

      $_SERVER["REMOTE_ADDR"]
      hier steht die IP des Besuchers.

      Meistens.

      Nun brauchst Du nur noch eine Abrage:
      if ($_SERVER["REMOTE_ADDR"]=="192.111.111.111")
      {
        ...

      Sollte zwischen Website-Besucher und dem Website-Server ein Proxy hängen,
      dann ist REMOTE_ADDR nicht zwingend die IP des Website-Besuchers. Deshalb
      würde ich diesen Fall besser abfangen:

        
      $user_ip = '192.111.111.111';  
      $remote_addr = isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'] ;  
        
      if($user_ip == $remote_addr) {  
      ...  
      
      

      MffG
      EisFuX

      --
      Auch meine Hosenträger sind intelligent, in dem Sinne, dass man sie regulieren kann. Sie besitzen ein adaptives Verhalten.
      Stanisław Lem
      1. Moin!

        $_SERVER["REMOTE_ADDR"]
        hier steht die IP des Besuchers.

        Meistens.

        Immer.

        Nun brauchst Du nur noch eine Abrage:
        if ($_SERVER["REMOTE_ADDR"]=="192.111.111.111")
        {
          ...

        Sollte zwischen Website-Besucher und dem Website-Server ein Proxy hängen,
        dann ist REMOTE_ADDR nicht zwingend die IP des Website-Besuchers.

        Dieser Fall kann eintreten, ist aber irrelevant.

        1. Ein Proxy ist nicht gezwungen, die tatsächliche IP des anfordernden Rechners durchzureichen.
        2. Eine solche IP kann häufig aus einem privaten IP-Bereich kommen und ist deshalb alles andere als eindeutig.
        3. Die Angabe von HTTP_X_FORWARDED_FOR ist beliebig manipulierbar und, auch vollkommen ohne Proxy, von jedem passend programmierten Client in den Request einsetzbar. Durch das Verlassen auf diese Angabe öffnest du eine krasse Sicherheitslücke.

        Ich denke, es ist vollkommen in Ordnung, Proxys einfach nicht gesondert zu berücksichtigen. Wer Zugriff basierend auf seiner IP haben will, der weiß, dass er dem Server seine richtige IP präsentieren muß, und nicht die eines Proxys - oder dass er tatsächlich einen bestimmten Proxy mit der richtigen IP benutzen muß, und nicht direkt zugreifen darf.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Gut dann besser nur mit REMOTE_ADDR: die "IP-Sperre" in PHP-Form.

            
          <?php  
          // Pfad vom DOCUMENT_ROOT des Webservers aus gesehen:  
          $fehlerseite = '/pfad/Weiterleitung.html';  
            
          // Liste der erlaubten IPs  
          $allow = array(  
            '127.0.0.201',  
            '127.0.0.202'  
          );  
            
          if( !in_array( $_SERVER['REMOTE_ADDR'], $allow, TRUE ) ) {  
            header('Status 403: Forbidden');  
            include( $_SERVER['DOCUMENT_ROOT'].$fehlerseite );  
            exit();  
          }  
          ?>
          ~~~~~~html
            
          <html>  
          <head>  
          <title>Hallo!</title>  
          ...
          

          Wie im Quelltext angedeutet, kann direkt hinter "?>" der HTML-Code der zu schützenden Seite notiert werden.
          Die IP-Adressen werden in das Array $allow eingetragen, wie in den beiden Beispielen angegeben.
          Die Adresse der Seite, die im Falle eines unberechtigten Zugriffs angezeigt werden soll, wird statt "/pfad/Weiterleitung.html" eingetragen.

          Das Ganze setzt ein funktionierendes PHP auf dem Webserver voraus. Und die zu schützende Datei muss dann die Endung ".php" haben (zumindest in den meisten Fällen).

          MffG
          EisFuX

  2. Hi,

    ich wollte eine seite erstellen auf die man nur gelangt,und dessen inhalt man nur abrufen kann, wenn man eine bestimmte IP,die vorher eingestellt wird besitzt (in diesem falle 2 IP's)

    Zusätzlich zu den geposteten Lösungen will ich nur noch anmerken, das dieser Zugriffsschutz sehr unzuverlässig ist.
    Wenn es sich um sensible Daten handelt, solltest du andere Möglichkeiten nutzen.

  3. Hallo tramer,

    ich wollte eine seite erstellen auf die man nur gelangt,und dessen inhalt man nur abrufen kann, wenn man eine bestimmte IP,die vorher eingestellt wird besitzt (in diesem falle 2 IP's)
    da ich weder von html noch von sonst einer porgrammiersprache weitgehende kenntnisse habe,würde ich mich sehr freuen wenn mir jemand einen volltständigen code, in dem man nur noch die beiden IP's und die seite zu der weitergeleitet werden soll eingeben muss, schicken könnte. am besten auch noch die art wie man den code einfügen muss,(ich arbeite mit dem webbuilder >dreamweaver< wenn das was hilft) wie gesagt,ich bin ein absoluter laie.

    Die Lösung hängt davon ab, welche Konfigurationsmöglichkeiten du auf deinem Webserver hast. Eine Möglichkeit ohne Script-Sprachen (wie Perl und PHP) wäre zum Beispiel eine so genannte .htaccess-Datei, die du im obersten vom Web aus zugänglichen Verzeichnis ablegst:

      
    Order Deny,Allow  
    Deny from all  
    Allow from env=DEINE_IP  
    
    

    Dies setzt aber voraus, dass der Webserver so konfiguriert ist, dass er solche Dateien auch abarbeitet.

    MffG
    EisFuX

    --
    Auch meine Hosenträger sind intelligent, in dem Sinne, dass man sie regulieren kann. Sie besitzen ein adaptives Verhalten.
    Stanisław Lem
    1. Moin!

      Allow from env=DEINE_IP

        
      Warum denn bitte "env=127.0.0.1" (Beispiel-IP). Wozu dasn "env=" davor? Ist in meinen Augen syntaktisch falsch, nur die IP allein ist korrekt:  
        
      ~~~apache
        
      Allow from 127.0.0.1  
      
      

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. Hallo Sven Rautenberg,

        Warum denn bitte "env=127.0.0.1" (Beispiel-IP). Wozu dasn "env=" davor? Ist in meinen Augen syntaktisch falsch, nur die IP allein ist korrekt: ...

        Wahrscheinlich beim eiligen Copy-N-Paste passiert ...
        Aber das ist nicht die einzige Ungereimtheit -- daher das Ganze nochmal in ausführlicherer/verbesserter Form -- Bezug nehmend auf den Ausgangs-Post:

        Hallo tramer,

        ich wollte eine seite erstellen auf die man nur gelangt,und dessen inhalt man nur abrufen kann, wenn man eine bestimmte IP,die vorher eingestellt wird besitzt (in diesem falle 2 IP's)

        Du legst ein Verzeichnis an, in welchem sich die "zu schützende Seite"  befindet (es dürfen aber auch mehrere sein). In das Verzeichnis kommt eine weitere Datei, die den Namen ".htaccess" trägt. Diese hat folgenden Inhalt:

          
        ErrorDocument 403 /pfad/weiterleitung.html  
          
        Order Deny,Allow  
        Deny from all  
        Allow from ERLAUBTE_IP_1  
        Allow from ERLAUBTE_IP_2  
        
        

        ... wenn mir jemand einen volltständigen code, in dem man nur noch die beiden IP's und die seite zu der weitergeleitet werden soll eingeben muss, schicken könnte.

        Hierbei musst du "/pfad/weiterleitung.html" durch den Pfad zu der Datei angeben, die deine (benutzerdefinierte) Fehlermeldung enthalten soll. Kommentierst du die Zeile aus (mit einem # am Anfang), zeigt der Webserver seine Standard-Meldung.

        Die Platzhalter "ERLAUBTE_IP_1" und "ERLAUBTE_IP_2" ersetzt du durch die IP-Adressen, von denen aus Zugriff möglich sein soll.

        ... am besten auch noch die art wie man den code einfügen muss,(ich arbeite mit dem webbuilder >dreamweaver< wenn das was hilft) wie gesagt,ich bin ein absoluter laie.

        Die Datei muss halt hoch auf den Server. Und sie muss ".htaccess" heißen. Manche Programme unter Windoze haben/hatten Probleme, Dateien mit solchen Namen zu erzeugen. Dann benennst du sie eben auf der Kommandozeile um oder nach dem FTP-Upload auf dem Server.

        Und das Ganze funktioniert natürlich nur, wenn der Webserver so konfiguriert ist, dass er ".htaccess"-Dateien und die hierzu benutzten Konfigurationsbefehle abarbeitet.

        Die Befehls-Beschreibung von Ordr, Allow und Deny (englisch):
        http://httpd.apache.org/docs/2.0/mod/mod_access.html

        Dito für ErrorDocument (deutsch):
        http://httpd.apache.org/docs/2.0/de/mod/core.html.de#errordocument

        EisFuX