Peter: php quellcode sicherheit

Hallo Allerseits,

ich höre immer wieder , man könne den php Quellcode "auslesen".
Ich habe ledider nirgendwo irgendetwas dazu gefunden.
Daher würde ich mich freuen, wenn jemand etwas dazu sagen könnte.
Denn in meinem Code sind ja Datenbank-Passwörter abgespeichert, jetzt hab ich ein mulmiges Gefühl.

mfg
Peter

  1. ich höre immer wieder , man könne den php Quellcode "auslesen".
    Ich habe ledider nirgendwo irgendetwas dazu gefunden.
    Daher würde ich mich freuen, wenn jemand etwas dazu sagen könnte.
    Denn in meinem Code sind ja Datenbank-Passwörter abgespeichert, jetzt hab ich ein mulmiges Gefühl.

    Der PHP-Quelltext lässt sich nicht von jedem lesen. Das liegt einfach daran, daß dieser Text schon auf dem Server verarbeitet wird und nur das Ergebnis davon zum Browser gelangt - ohne jegliche PHP-Anteile.

    Nun gibt's natürlich auch Ausnahmen:

    • Manche Leute haben die Angewohnheit, Ihre Programme in mehrere Dateien aufzuteilen, so daß zum Beispiel in einer Datei häufig benutzte Funktionen gesammelt sind, die dann nur noch in allen anderen einmal per include() einbunden werden müssen.
      Verpasst man dieser Datei die Endung .inc (für include), wird sie von jederman lesbar (sofern die Adresse bekannt ist), weil so gut wie kein Webserver eine .inc-Datei als PHP-Datei erkennt und sie somit "roh" direkt an den Browser ausliefert anstatt sie durch den PHP-Interpreter zu jagen.
      Also immer darauf achten, daß PHP-Dateien auf .php enden.

    • Der PHP-Interpreter läuft in den meisten Fällen als Teil des Webservers, und somit nicht unter der Nutzerkennung des Eigentümers der PHP-Dateien.
      Da der Webserver Zugriff auf alle auszuliefernden Dateien haben muß, kann man mit eigenem PHP-Code unter Umständen PHP-Dateien anderer Benutzer auslesen. Sowas kommt häufiger vor, als man denkt, weil viele Webhoster einfach irgendeine Kiste von ihrem Lieferanten mieten und außer über die vorinstallierten Konfigurationssoftware nicht sonderlich viel Ahnung von Unix haben.

    Um das auszunutzen, muß man aber selbst Kunde bei dem Webhoster sein, dessen Kunden man ausspionieren will.

    • Es gibt eine Lücke in der gern verwendeten Datenbank MySQL, mit der sich ebenfalls lustig Dateien lesen lassen und die sich AFAIK nicht ohne weiteres schließen lässt.
      Aber auch hier: man muß selber Kunde beim Hoster sein.

    Also: Die Gefahr ist eher gering, Du solltest aber immer Sicherungskopien Deiner Webseiten haben und keine allerhöchst vertraulichen Sachen auf dem Webserver speichern.

    Gruß,
      soenk.e

    1. hey

      Also immer darauf achten, daß PHP-Dateien auf .php enden.

      danke für den tip, ich habe zwar immer "intuitiv" .php benutzt(da sich mir nie der sinn einer .inc endung erschloß, aber nun weiß auch , weshalb es sogar wichtig ist!:)

      Um das auszunutzen, muß man aber selbst Kunde bei dem Webhoster sein, dessen Kunden man ausspionieren will.

      Also: Die Gefahr ist eher gering, Du solltest aber immer Sicherungskopien Deiner Webseiten haben und keine allerhöchst vertraulichen Sachen auf dem Webserver speichern.

      mit einem gewissen risiko muß man immer rechnen;)
      aber leider bleibt es nicht aus auch wichtige informationen auf dem server zu hinterlassen(adressen, passwoerter....), daher
      stieß mir mal übel die thematik "php verschlüsseln"(mal irgendwo gelesen) übel auf, denn wenn es eine einfache möglichkeit gibt, den php code vom server irgenwie doch "ausgehändigt" zu bekommen, kann man sich meiner passwörter bemächtigen.
      ich persönlich habe keine ahnung, wie das "aushändigen" vonstatten gehen soll, anderseits verstehe ich nicht warum es firmen gibt, die solch eine php-verschlüsselung anbieten....
      kannst du dir darauf einen reim machen?

      danke für die antwort im übrigen:)

      Gruß,
        soenk.e

      gruß auch
      peter

      1. Hallo,

        man kann die Datei ruhig *.inc nennen. Wichtig ist nur, das Sie für den Web-user nicht erreichbar ist.
        Also speichert man diese inc-dateien eine Verzeichnisebene höher ab als das startverzeichnis der domain...

        z.B.

        mein zugewiesener Pfad

        /html/projekt1/work  --> ist das startverzeichnis der page in-dateien kommen eine ebene höher, also in projekt1

        ein zugriff auf die geschützten dateien ist so nicht möglich
        im script kann man aber mit include (../zugang.inc); includen...

        Odium

      2. aber leider bleibt es nicht aus auch wichtige informationen auf dem server zu hinterlassen(adressen, passwoerter....), daher
        stieß mir mal übel die thematik "php verschlüsseln"(mal irgendwo gelesen) übel auf, denn wenn es eine einfache möglichkeit gibt, den php code vom server irgenwie doch "ausgehändigt" zu bekommen, kann man sich meiner passwörter bemächtigen.
        ich persönlich habe keine ahnung, wie das "aushändigen" vonstatten gehen soll, anderseits verstehe ich nicht warum es firmen gibt, die solch eine php-verschlüsselung anbieten....

        Ganz einfach: Die wollen auch ihre Brötchen verdienen :)

        Ernsthaft: Solche Verschlüsselungsdinger können schon vom Prinzip her nicht viel taugen und es ist nur eine Frage der Zeit, bis die verschlüsselten Daten geknackt sind.
        Der Kern der Sache ist ja immer wieder, daß PHP in der Regel im Webserver sitzt, der Webserver Zugriff auf alle Dateien haben muß und somit jeder, der "im Namen des Webservers" PHP benutzt, auf alle Dateien zugreifen kann.

        Es gibt verschiedene Möglichkeiten, mehr Sicherheit bei PHP einzubauen, die bringen aber alle wiederum Nachteile mit sich, teilweise gravierende.
        Und normale Webhoster werden sich auf solche Änderungen an der Serverkonfiguration eh nicht einlassen.

        Wie gesagt: Halte immer eine Kopie Deiner Daten zu Hause.

        Willst Du aber wirklich vernünftige Sicherheit, dann musst Du Dir schon einen eigenen Webserver zusammenstellen, auf dem nur Du allein werkelst.

        Gruß,
          soenk.e

    2. Hallo Sönke,

      wie's der Titel schon sagt, mal aus Interesse nachgefragt:

      Verpasst man dieser Datei die Endung .inc (für include), wird sie von jederman lesbar (sofern die Adresse bekannt ist), weil so gut wie kein Webserver eine .inc-Datei als PHP-Datei erkennt und sie somit "roh" direkt an den Browser ausliefert anstatt sie durch den PHP-Interpreter zu jagen.

      mmh ... was passiert bei einer blabla.inc.php - auf vernünftig konfigurierten ...ix Systemen?

      Ich habe eben auch die "dumme" Angewohnheit zu includende Dateien mit .inc zu Kennzeichnen setze aber jedesmal konsequent noch das .php dahinter .... was greift da? das (1.) .inc oder das (2.) .php ?

      Gruß
      der_bernd

      1. Hallo Bernd,

        mmh ... was passiert bei einer blabla.inc.php - auf vernünftig konfigurierten ...ix Systemen?

        Ich habe eben auch die "dumme" Angewohnheit zu includende Dateien mit .inc zu Kennzeichnen setze aber jedesmal konsequent noch das .php dahinter .... was greift da? das (1.) .inc oder das (2.) .php ?

        Soweit ich weiß, zieht immer & überall die letzte Endung
        (auch bei Windows - remember loveletter.txt.vbs ? - einer der Gründe, sich immer den vollständigen Dateinamen azeigen zu lassen)

        Gruß aus Bilk

        Rainer

        1. Ich habe eben auch die "dumme" Angewohnheit zu includende Dateien mit .inc zu Kennzeichnen setze aber jedesmal konsequent noch das .php dahinter .... was greift da? das (1.) .inc oder das (2.) .php ?

          Soweit ich weiß, zieht immer & überall die letzte Endung

          Beim Apache müsste das glaube ich eher "von rechts nach links" heißen (auch wenn's auf den ersten Blick auf das gleiche hinausläuft).

          Eine Datei kann durchaus test.html.de.gz heißen, wobei alle Anhängsel beachtet werden: html > Dateityp text/html, de > Deutsch und gz > gzip-komprimiert. Sowas wird für "Content Negotiation" genutzt, siehe http://httpd.apache.org/docs/content-negotiation.html.

          Ich weiß aber nicht, inwiefern das tatsächlich bei der Wahl des Handers, also des Moduls vom Server, das die Datei verarbeiten wird, eine Rolle spielt.
          Eine Datei test.shtml.php wird aber sicher zuerst vom PHP-Interpreter verwurstet. Ob dann das SSI-Modul (.shtml) noch was davon zu sehen kriegt - ausprobieren.

          Gruß,
            soenk.e

  2. Hallo!

    netter Link zum Thema Sicherheit von PHP-Code:
    http://www.blade2.com/lastwords/

    grüße
    harald