Dieter Raber: Rausfinden, was ein Server alles kann

Hallo,

Bei neuen Kunden habe ich gelegentlich das Problem, dass ich wissen moechte, was deren Webserver so alles kann (SSI, PHP etc.), die Kunden sind aber manchmal noch nicht so weit, dass sie mir Zugriff auf Ihren Server gewaehren.

Ich habe mir ein kleines Script geschrieben und das geht so:
Eine HTML-Seite beinhaltet eine Form mit ein paar hidden fields, die alle 0 als Wert haben. In diese Seite wird via <iframe> zb. eine kleine PHP-Seite geladen, die nichts anderes macht, als mit Javascript den Wert eines der Felder auf die PHP-Version zu setzen, also von 0 auf 4.3.3 oder sowas. Gelingt das, habe ich es mit PHP 4.3.3 zu tun, kommt 0 raus, hab ich kein PHP. So aehnlich mache ich es auch mit SSI.

Der Kunde kann also dieses Paket selbst hochladen und ich komme an meine Auskuenfte. Jetzt haette ich ganz gerne, dass es auch fuer andere serverseitige Sprachen funktionieren wuerde. Zudem wuerde ich gerne verhindern, dass, wenn beispielsweise PHP nicht unterstuezt wird. der Browser versucht, die PHP-Seite runterzuladen.

Hat da irgendjemand irgendwelche Ideen zum Thema?
Falls irgendjemand Lust hat, mit der Seite zu spielen, kann ich die auch gerne mal weitergeben.

Dieter

  1. Hallo,

    Eine HTML-Seite beinhaltet eine Form mit ein paar hidden fields, die alle 0 als Wert haben. In diese Seite wird via <iframe> zb. eine kleine PHP-Seite geladen, die nichts anderes macht, als mit Javascript den Wert eines der Felder auf die PHP-Version zu setzen, also von 0 auf 4.3.3 oder sowas. Gelingt das, habe ich es mit PHP 4.3.3 zu tun, kommt 0 raus, hab ich kein PHP.

    Ich verstehe nicht, wie Du mit Client-seitigen Mechanismen
    an Dinge kommen willst, die auf dem Server passieren.

    Der Kunde kann also dieses Paket selbst hochladen und ich komme an meine Auskuenfte.

    Ich wuerde etwa folgendes vorschlagen:

    • Statische HTML-Seite als Ausgangspunkt
      1. Unterverzeichnis ohne .htaccess
      1. Unterverzeichnis mit einer .htaccess,
          die PHP fuer die Endungen .html und .php einschaltet
      1. Unterverzeichnis mit einer .htaccess,
          die SSI fuer die Endungen .html und .shtml einschaltet

    In 1. und 2. legst Du zwei PHP-Dateien namens phpinfo.php und phpinfo.html
    Du kannst darin eine phpinfo() einbauen. (Oder auch ein echo "Hello World"; ...)
    Mit der phpinfo() kriegst Du ja gleich noch viele weitere interessante Infos...

    In 2. und 3. legst Du zwei SSI-Dateien namens ssitest.html und ssitest.shtml
    Darin kannst Du einige SSI-Befehle einbauen.

    Nun kannst Du alle Dateien ueber's Web angucken.
    Und Dich freuen oder aergern.

    Jetzt haette ich ganz gerne, dass es auch fuer andere serverseitige Sprachen funktionieren wuerde.

    Dann gehe analog vor.

    Zudem wuerde ich gerne verhindern, dass, wenn beispielsweise PHP nicht unterstuezt wird. der Browser versucht, die PHP-Seite runterzuladen.

    Das geht nicht.
    Dateien, von denen er nicht weiss, was sie sind,
    liefert der Apache als text/plain aus.
    Verbieten kannst Du es ihm ja nicht...

    ---

    Natuerlich ist es sehr sinnvoll, direkt mit den Dateien zu testen.

    Um eine erste Ahnung davon zu kriegen, was ein Server
    kann und ist, reicht manchmal auch ein Blick auf den
    HTTP-Head, den er mit jeder Datei rausschickt.
    http://cgi.w3.org/cgi-bin/headers
    http://service.wiwi.uni-mainz.de/~ostheimer/php/serverspy/
    http://www.schroepl.net/cgi-bin/http_trace.pl

    Gruesse,

    Thomas

    --
    Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
    Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    1. Hallo,

      Ich verstehe nicht, wie Du mit Client-seitigen Mechanismen
      an Dinge kommen willst, die auf dem Server passieren.

      Das ist ganz einfach:
      Die PHP-Seite schreibt ein kleines Javscript, das den Wert von PHP_OS an die HTML-Seite uebertragt. Kein PHP bedeutet auch, dass der Wert in der Hauptseite nicht geaendert wird und demnach 0 zurueckgibt.

      Ich hatte auch an .htaccess gedacht, aber mein letzter Kunde hatte IIS. Im Prinzip hast Du aber recht, die Chancen an einen Apachen zu geraten sind immer recht gut.

      Mit der phpinfo() kriegst Du ja gleich noch viele weitere interessante Infos...

      Wenn PHP wie oben beschrieben, meine Hauptseite aendert, habe ich einen Link auf eine PHP Infoseite. Ich hatte das im ersten Posting nur nicht erwaehnt, um mich kurz zu fassen. Wenn der Kunde hingegen gleich eine PHP-Info sieht, weiss er nichts mit anzufangen, deswegen hab ich mich auf das Allerwichtigste beschraenkt.

      In 2. und 3. legst Du zwei SSI-Dateien namens ssitest.html und ssitest.shtml
      Darin kannst Du einige SSI-Befehle einbauen.

      So aehnlich mach ich das auch, auch wieder Javascript, mit SSI eien Seite includen, die als Text '1' enthaelt.

      Und Dich freuen oder aergern.

      Ich freu mich lieber ;-)

      Jetzt haette ich ganz gerne, dass es auch fuer andere serverseitige Sprachen funktionieren wuerde.

      Dann gehe analog vor.

      Ich weiss leider nichts ueber JSP und Konsorten. Um das Script aber fuer jedermann nutzbar zu machen, waere es mir lieb, wenn andere Interessierte das uebernehmen wuerden. Wenn Du Lust hast, kann ich das Ding gern mal hochladen.

      Dateien, von denen er nicht weiss, was sie sind,
      liefert der Apache als text/plain aus.

      text/plain ist mir recht, macht IIS das auch so?

      Um eine erste Ahnung davon zu kriegen, was ein Server
      kann und ist, reicht manchmal auch ein Blick auf den
      HTTP-Head, den er mit jeder Datei rausschickt.

      Gute Idee!

      Dieter

    2. Moin!

      Ich habe folgende Vorschläge:

      1. info.php:

      <?
        phpinfo();
      ?>

      2. info.pl:

      #! /usr/bin/perl

      das ist jedenfalls "Standard"

      print "Content-type: text/html\n\n";

      my $var_name;

      print "<h1>Ausgabe der Umgebungsvariablen</h1>\n";
      print "<table border=1><tr><th>Variablen-Name</th><th>Variablen-Wert</th></tr>\n";

      foreach $var_name ( sort keys %ENV ) {
        print "<tr>\n  <td>$var_name</td>\n  <td>$ENV{$var_name}</td>\n</tr>\n";
      }#end foreach
      print "</table>\n";

      Sollte vollauf genügen. Wenn die Kunden keinen eigenen oder root- Server haben, dann werden diese ja vom Hoster konfiguriert. Eventuell den Kunden fragen, ob es ein cgi-bin Verzeichnis gibt.

      3. Frag den Kunde nach Hoster und Preis des Paketes (letzte Rechnung) und schau dann einfach beim Hoster auf der Webseite.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Hi!

        1. Frag den Kunde nach Hoster und Preis des Paketes (letzte Rechnung) und schau dann einfach beim Hoster auf der Webseite.

        Ja, ich frag mich auch gerade was das ganze bringt wenn ein Blick gnügt ;-)
        Oder zur Not ein Anruf beim Hoster.

        Grüße
        Andreas

        1. Hallo,

          Ihr habt da im Prinzip schon recht und wenn mein Kunde in Deutschland ist, ist das auch kein Problem. Meine Kunden sind allerdings haeufiger in den USA und da kann man nicht einfach mal  den Hoster anrufen. Ich finde es relativ schwierig, das Vertrauen amerikanischer Kunden zu gewinnen und mein Eindruck ist, dass ich mit einem kleinen Script weiterkomme als mit vielen Fragen.

          Dieter

  2. Bei neuen Kunden habe ich gelegentlich das Problem, dass ich wissen moechte, was deren Webserver so alles kann (SSI, PHP etc.), die Kunden sind aber manchmal noch nicht so weit, dass sie mir Zugriff auf Ihren Server gewaehren.

    wenn Du einen Auftrag erhältst wirst Du doch sicher eine Anforderungserhebung oder eine Vorabsprache bezüglich des Designs führen, oder? Wenn Deine Kunden Dir dann Möglichkeiten nicht vermitteln, dann gibt es 2 Möglichkeiten. Entweder Sie wollen es nicht oder sie wissen es nicht.

    Also inwiefern sollte Dir dieses Script dabei helfen, das Vertrauen der Kunden zu erreichen?