ip-abfrage
tramer
- php
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
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
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
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
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
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.
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
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
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