phpbar.de logo

Mailinglisten-Archive

[php] Configdatei von anderem Server einbinden

[php] Configdatei von anderem Server einbinden

Sven Eicher phpbar at koalashome.de
Fre Dez 19 00:03:24 CET 2003


Hallo

> > > Wie kann ich denn etwas zurückgeben, wenn ich ein Script
> > > per include anspreche?
> > <error>
> > man kann NUR im eigenen Filesystem wirklich includen.

Da war ich wohl etwas wirr.
Mit includen meinte ich das einlesen per fopen().

> > Und wenn es ein PHP-Script ist, wird sie eben geparst ...
> also spricht ja technisch nichts dagegen, eine Konfigurationsdatei mit
> file() vom remote-Server einzulesen und mit eval() auf dem lokalen
> Server als PHP-Code auszufuehren und damit die Konfiguration im
> laufenden Skript verfuegbar zu machen. ;-)

Das ist der einfachste Weg.

> Ob man das aus sicherheitstechnischen Dingen so machen sollte, weil die
> Konfiguration dann fuer Dritte manipulierbar wird, ist eine andere
> Frage. :-)

Eine Frage auf die ich eine Antwort gefunden habe.
Norberts EMail mit dem Hinweis auf POST und die Verwendung der IP brachte mich 
dann doch noch auf die richtige Spur.

Also, Server A enthält die Configdatei mit diesem Inhalt:

--- schnipp --- schnapp ---
<?php
// REMOTE_ADDR entspricht der IP von Server B
if ($_GET['te'] and $_SERVER["REMOTE_ADDR"] == '80.135.42.29') {
?>

// Kommentar
$testvar = 'example';

<?php
}
?>
--- schnipp --- schnapp ---


Server B ruft nun diese Configdatei auf:

--- schnipp --- schnapp ---
<?php
$file = fopen ("http://www.example.com/conf.php?te=1", "r");
if (!$file) {
  echo "<p>Datei konnte nicht geöffnet werden.\n";
  exit;
}
while (!feof ($file)) {
  $line = fgets ($file, 1024);
  if (trim($line) != '') {
    eval (trim($line));
  }
}
fclose($file);
?>
--- schnipp --- schnapp ---

Was passiert:
Die if-Abfrage in der Configdatei (conf.php) prüft den GET-Wert und die 
übergebene IP.
Stimmen diese Werte, werden die Daten im if-Block ausgegeben und somit an die 
aufrufende Datei auf Server B weitergereicht.

Tja, damit wäre zumindest sichergestellt, dass die Configdaten nur mit einer 
bestimmten IP gelesen werden können, also ein bloser Aufruf im Browser zu 
nichts führt.
Man kann das natürlich noch um einen else-Zweig erweitern der, um es mit 
Norberts Worten zu sagen: "irgend einen Schnulli ausgibt".

-- 
Koala


php::bar PHP Wiki   -   Listenarchive