M.: PHP_SAPI manipulierbar?

Mahlzeit,

ist PHP_SAPI durch einen Webserver manipulierbar?
Ich will ein Script, das im Webroot liegt (leider ist es nicht immer möglich, sowas ausserhalb des Webroots zu legen) nur per CLI aufrufen. Grundsätzlich ist es ja nicht schwer, das zu prüfen und ggf. das Script abzubrechen.
Die Frage ist nur, kann ich beim Aufruf im Browser diese Konstante so manipulieren, dass das Script trotzdem glaubt, per CLI aufgerufen worden zu sein?

--
42
  1. Hello,

    ist PHP_SAPI durch einen Webserver manipulierbar?
    Ich will ein Script, das im Webroot liegt (leider ist es nicht immer möglich, sowas ausserhalb des Webroots zu legen) nur per CLI aufrufen. Grundsätzlich ist es ja nicht schwer, das zu prüfen und ggf. das Script abzubrechen.
    Die Frage ist nur, kann ich beim Aufruf im Browser diese Konstante so manipulieren, dass das Script trotzdem glaubt, per CLI aufgerufen worden zu sein?

    Willst du es nun per Browser, also http/s aufrufen, oder nicht?
    Wenn es nur per cli geschehen soll, kannst Du es doch für den Webserver verstecken, denn den benötigst Du für CLI doch gar nicht.

    siehe ".ht*"

    Und auf *.php oder eine andere für den Parser relevante Endung muss es auch nicht lauten.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    Die ultimative Seite für Selbermacher
    1. Mahlzeit,

      Willst du es nun per Browser, also http/s aufrufen, oder nicht?

      NUR per CLI, wenn irgendwas anderes, soll das Script abbrechen.

      Wenn es nur per cli geschehen soll, kannst Du es doch für den Webserver verstecken, denn den benötigst Du für CLI doch gar nicht.

      Ich will den Konfigurationsaufwand möglichst klein halten. Das wäre dann Schritt 2 ;)

      Es geht ja erstmal nur um ne Grundsatzfrage. Teile der Software können per Cron aufgerufen werden, was ja praktisch per CLI passiert. Wenn ich das entsprechende Script ausserhalb des Docroot ablegen muss, schränkt das die Anzahl der möglichen Webspaceangebote drastisch ein.

      Und auf *.php oder eine andere für den Parser relevante Endung muss es auch nicht lauten.

      Doch, in jedem Fall. Denn sonst werden die evtl. als text/plain ausgeliefert, was fatal sein kann. Sowas gibt nen potenziellen Hacker unnötig viele Infos an die Hand. Zumindest meine Meinung.

      Grundsätzlich geht es mir darum, macht es überhaupt Sinn, eine Abfrage ob CLI zu machen um zusätzliche Sicherheit zu bekommen. Wenn hier schonmal ne Hürde liegt, die relativ hoch ist, macht das Angreifern das Leben schwer.

      --
      42
      1. Hello,

        Ich will den Konfigurationsaufwand möglichst klein halten. Das wäre dann Schritt 2 ;)

        Der Aufwand erstreckt sich nur in einer passenden Namensvergabe: ".htMySript.ext"

        Schau Dir mal die Server-Variablen an:
        http://de2.php.net/manual/en/reserved.variables.server.php

        Da gibts jede Menge, die per CLI andere Inhalte haben, als per http/s.

        Manipulieren kann man einige davon per .htaccess-Datei, aber nicht alle.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        Die ultimative Seite für Selbermacher
        1. Mahlzeit,

          Der Aufwand erstreckt sich nur in einer passenden Namensvergabe: ".htMySript.ext"

          Und was macht da jetzt das .ht? Mal abgesehen davon, dass auf einigen Servern Dateien mit. am Anfang auch angezeigt werden, auch wenns Pfui ist ;)
          Ich hätte per .htaccess den Zugriff auf die Datei verhindert, das meinte ich mit Schritt 2 ;)

          Da gibts jede Menge, die per CLI andere Inhalte haben, als per http/s.

          Das ist mir klar.

          Manipulieren kann man einige davon per .htaccess-Datei, aber nicht alle.

          Mir gehts nicht um eine Manipulation per .htaccess, mir gehts darum, ob jemand per Aufruf im Browser (oder wget, curl ...) diese Variablen beeinflussen kann.

          --
          42
          1. Hello,

            Da gibts jede Menge, die per CLI andere Inhalte haben, als per http/s.

            Das ist mir klar.

            Manipulieren kann man einige davon per .htaccess-Datei, aber nicht alle.

            Mir gehts nicht um eine Manipulation per .htaccess, mir gehts darum, ob jemand per Aufruf im Browser (oder wget, curl ...) diese Variablen beeinflussen kann.

            Das habe ich schon verstanden.
            Wenn der normale Nutzer keinen Schreibzugriff auf die DocRoot hat, und die .htacess entsprechend geschützt ist (sie sollte nur von Root änderbar sein!), dann besteht aus dieser Ecke keine Gefahr. Die Variablen möcte ich mal so aus dem Bauch heraus in drei Klassen einteilen:

            * nur vorhanden, wenn Request per http/s stattfand
            * * teilweise abhängig von Clienteinstellungen, also manipulierbar

            * immer vorhanden und "sicher"

            * immer vorhanden und vielleicht unsicher

            Lass Dir mal das $_SERVER-Array ausgeben per CLI. Musst Du vermutlich in eine Datei schreiben lassen. Per Browser ist es zu umständlich, da CLI ja keine Header produziert.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            Die ultimative Seite für Selbermacher
            1. Hello,

              Lass Dir mal das $_SERVER-Array ausgeben per CLI. Musst Du vermutlich in eine Datei schreiben lassen. Per Browser ist es zu umständlich, da CLI ja keine Header produziert.

              April, April.

              Wenn Du direkt über die Konsole ein CLI-Script aufrufst, sind die Variablen aus den superglobalen Arrays erstmal gar nicht vorhanden. Ich konnte es nicht gleich ausprobieren gestern.

              Und ob welche da sind, wenn man den Umweg über http-Request und exec() geht, weiß ich im Moment auch nicht.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              Die ultimative Seite für Selbermacher
  2. Hello,

    http://www.php-cli.com/php-cli-cgi.shtml

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    Die ultimative Seite für Selbermacher
    1. Mahlzeit,

      http://www.php-cli.com/php-cli-cgi.shtml

      Danke für den Link, aber da finde ich nichts, was ich nicht schon wusste. Ist trotzdem ein Bookmark wert, weils ne schnelle Übersicht ist :)

      --
      42