Jan: Warum CGI-BIN?

Hallo!
Ein CGI-Skript laesst sich auf meinem (virtuellen) Server (Apache) sowohl im CGI-BIN-Verzeichnis, wie auch im root, also www.domain.de, ausfuehren.

Gibt es da irgendwelche Unterschiede bez. Geschwindigkeit, Sicherheit usw.?

Koennte ich problemlos ein www.domain.de/index.cgi ausfuehren, das im Vergleich haargenau so arbeitet, wie ein www.domain.de/cgi-bin/index.cgi?

Danke,

Jan

  1. Hallo,

    Ein CGI-Skript laesst sich auf meinem (virtuellen) Server (Apache) sowohl im CGI-BIN-Verzeichnis, wie auch im root, also www.domain.de, ausfuehren.<<

    Beim Apache kannst du in der Tat deine Scripte auch ausserhalb des CGI-Bins ausführen - ein Nachteil entsteht dabei nicht. Löschen würde ich das CGI-Bin aber lieber trotzdem nicht...

    Koennte ich problemlos ein www.domain.de/index.cgi ausfuehren, das im Vergleich haargenau so arbeitet, wie ein www.domain.de/cgi-bin/index.cgi?<<

    Solange dein Server .cgi-Dateien als als Index-Dateien akzeptiert, sollte das kein Problem sein. Sonst kann man das auch mit einer .htacces-Datei lösen...
    Viele Grüsse,

    Nicolas Muehlen

    1. Hallo Nicolas,

      erstmal danke fuer die schnelle Antwort...

      Solange dein Server .cgi-Dateien als als Index-Dateien akzeptiert, sollte das kein Problem sein. Sonst kann man das auch mit einer .htacces-Datei lösen...

      Naja, das mit der .htaccess ginge ja dann aber nur eber ein redirect, wobei auch die URL im Browser-Adress-Fenster geaendert wuerde, oder gibt es da auch eine elegantere Loesung?

      Beste Gruesse,

      Jan

      1. Hallo Jan,

        Naja, das mit der .htaccess ginge ja dann aber nur eber ein redirect, wobei auch die URL im

        Browser-Adress-Fenster geaendert wuerde, oder gibt es da auch eine elegantere Loesung?<<

        Leg mal eine .htaccess-Datei mit folgendem Inhalt im Root-Verzeichniss an:

        DirectoryIndex index.cgi index.html

        Dahinter kannst du natürlich beliebig viele andere MIME-Typen setzen (gilt dann nämlich auch in den Unterverzeichnissen).
        Viele Grüsse,

        Nicolas Muehlen

      2. Naja, das mit der .htaccess ginge ja dann aber nur eber ein redirect, wobei auch die URL im Browser-Adress-Fenster geaendert wuerde, oder gibt es da auch eine elegantere Loesung?

        Wenn man genügend Zugriffsrechte hat, kann man alles umdefinieren - den Namen der Default-Datei ebenso wie die Endung für CGI-Programme.
        Ob es der Transparenz dienlich ist, "index.html" als CGI-Programm zu konfigurieren, sei dahingestellt; "index.cgi" als Defaultwert für directory browsing zu definieren (ggf. auch nur nachrangig gegenüber index.html) hielte ich für die elegantere Lösung.

        Und die URL, auf die der Anwender zugreift, sollte ja sowieso den Dateinamen nicht mehr enthalten (weil man den ggf. eines Tages ändern können möchte, ohne daß die Bookmarks beim Anwender ins Nirwana zeigen).

  2. Hallo!
    Ein CGI-Skript laesst sich auf meinem (virtuellen) Server (Apache) sowohl im CGI-BIN-Verzeichnis, wie auch im root, also www.domain.de, ausfuehren.

    Gibt es da irgendwelche Unterschiede bez. Geschwindigkeit, Sicherheit usw.?

    Koennte ich problemlos ein www.domain.de/index.cgi ausfuehren, das im Vergleich haargenau so arbeitet, wie ein www.domain.de/cgi-bin/index.cgi?

    Die Geschwindigkeit sollte gleich sein. (Naja, es muß noch das wort cgi-bin mit über die Leitung gequetscht werden) Nur das cgi-bin hat ein paar Vorteile. Grundsätzlich ist es nicht erlaubt, sich den Inhalt des Verzeichnisses anzuschauen. Wenn du also mal kurz die index.html runternimmst, dann könnte halt jemand alle CGI-Programme sehen, und auch die Dateien, die sie bearbeiten. Nicht auf jedem Server darf man CGIs überall ausführen. Deshalb würde ich die Sache nach möglichkeit im cgi-bin lassen, wenn du mal den Server wechselst, damit du nix umstellen mußt.

  3. Ein CGI-Skript laesst sich auf meinem (virtuellen) Server (Apache) sowohl im CGI-BIN-Verzeichnis, wie auch im root, also www.domain.de, ausfuehren.

    Wenn Du die - in dieser Hinsicht "faulen" - Standardeinstellungen des Apache verwendest, dann ja.
    Wenn man es sich einfach macht, dann läßt man CGI-Anwendungen in jedem Verzeichnis ausführen und identifiziert sie über die Datei-Endung. Apache erlaubt so etwas und schaltet *.cgi standardmäßig auf "CGI-Anwendung". Well man andere Endungen haben, dann muß man diese definieren (z. B. *.pl für Perl-Skripts, bei denen man der Datei ansehen können will, was drin steht, usw.).

    Solange Du auf Deinem Server alleine bist, ist es auch relativ egal, wie CGI-Skripts ausgeführt werden. Aber schon wenn Du anfängst, Fremdsoftware zu installieren, die mit CGI läuft (etwa ein Diskussionsboard), dann will diese vielleicht irgendwelche anderen Einstellungen. Und wenn Du diese dann herstellst, läuft vielleicht irgendwas von Deinem eigenen Kram nicht mehr ...

    Da ist es schon sicherer, CGI-Anwendungen nur in einem entsprechenden Teilbaum aktivieren zu lassen.

    Ich selbst habe das bei uns im Intranet noch feiner geregelt: Ich habe in der Webserver-Konfiguration für jede CGI-Anwendung einen eigenen Definitionsabschnitt, welcher genau regelt, was in dem entsprechenden Verzeichnisbaum erlaubt ist und was nicht. So darf bei mir keineswegs jede CGI-Anwendung dasselbe wie jede andere, und es darf auch nicht dieselbe Benutzermenge darauf zugreifen.

    Durch die INCLUDE-Anweisung des Apache-Webservers kann ich jede einzelne anwendungssspezifische Teilkonfiguration in eine eigene Datei auslagern und weiß genau, welche Anwendung welche Einstellungen verursacht hat. Steige ich auf eine neue Webserver-Version um, dann muß ich lediglich
    den Abschnitt der INCLUDE-Anweisungen in die Konfigurationsdatei hineinkopieren. (Und da das sogar mehrstufig geht, reicht es, eine einzige Anweisung "include local.conf" einzufügen, welche Datei dann die include-Anweisungen für meine installierten Erweiterungen enthalten).

    Das ist natürlich die aufwendigere Methode - aber bei geeigneter Anwendung der vorhandenen Möglichkeiten verliert man gerade dadurch nicht den Überblick.

    Gibt es da irgendwelche Unterschiede bez. Geschwindigkeit, Sicherheit usw.?

    Geschwindigkeit: wohl kaum.

    Sicherheit: Je klarer das Berechtigungskonzept ist, um so leichter kann man es auf eventuelle Lücken prüfen. Das größte Sicherheitsrisiko ist meiner Meinung nach immer noch der Webmaster selbst.

    Koennte ich problemlos ein www.domain.de/index.cgi ausfuehren, das im Vergleich haargenau so arbeitet, wie ein www.domain.de/cgi-bin/index.cgi?

    Wenn die entsprechenden Einstellungen vorhanden sind, dann ja. Einige Firmen tun das ja auch - da wird man gleich auf der Wurzel-URL mit einer CGI- oder ASP-Anwendung begrüßt.