PHP Upload = Sicherheitsrisiko ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Upload = Sicherheitsrisiko ?

    Die Überschrift sagt eigentlich alles: Wenn ich per PHP den Upload von Dateien ermöglichen will, muß ich ein Verzeichniss haben wo jeder Schreibrechte hat. Dann kann ich dort die Dateien reinschreiben und andere (beliebige) User sollen sich die Dateien runterladen können. Frage: Wie kann ich verhindern, daß andere (z.B. Hacker) sich an diesem Verzeichnis vergreifen (z.B. so wie ich dort Dateien reinschreiben oder löschen). Kann man das überhaupt verhindern ?

  • #2
    könnte ein admin mal bitte die Überschrift korrigieren ? thx

    Kommentar


    • #3
      Per HTTP kann da auf herkömmlichen Wegen sowieso erstmal niemand was verändern oder löschen.

      CAT Music Files

      Kommentar


      • #4
        Das Problem, das Du beschreibst, ist tatsächlich keins - die Schreibrechte beziehen sich nur auf die Betriebssystemumgebung selbst (also höchstens auf Mitbenutzer des Servers) und auch da gibt es kein grosses Risiko: Meines Wissens kann ein für alle freigegebenes Verzeichnis nicht von fremden Usern beschrieben werden, wenn das "Eltern"verzeichnis nicht diesem gehört.

        Das weitaus grössere Problem ist, kurz gesagt, dass man durch verändern des Upload-Dateinamens (normalerweise /tmp/xyz) PHP dazu bringen kann, Skripte auf dem Server ungeparst anzuzeigen. Die PHP-4-Funktionen is_uploaded_file() und move_uploaded_file() schaffen hier Abhilfe, sie akzeptieren nur Dateien, die tatsächlich vom Benutzer hochgeladen wurden. Also unbedingt PHP 4 benutzen oder, falls dieses noch nicht installiert ist, Provider stressen bis er's tut!

        Kommentar


        • #5
          Auf sämtliche Files unter dem HTDOCS Directory (natürlich auch CGI-BIN - je nach Systemkonfiguration - soll aber hier nicht das Problem sein) kann über das HTTP Port lesend zugegriffen werden. Um vom Prinzip her auszuschließen, daß auf Files nicht generell lesend zugegriffen werden kann, sind diese Files außerhalb des Webserver-Root-Directory HTDOCS abzulegen. Über die Applikation können diese je nach realsiertem Berechtigungskonzept dann zum Lesen / Löschen oder was auch immer zur Verfügung gestellt werden. Zum Lesen oder Download genügt dann allerdings kein gewöhnlicher Link auf das sich außerhalb der Web-Root befindlichen Files, dazu benötigt man entsprechende PHP-Filesystem-Funktionen.

          Ein Verzeichnis auf dem WORLD Schreibzugriff hat brauchst Du nicht. Der Webserverdaemon schreibt ins Verzeichnis, nicht der vermeintlich angeloggte Benutzer, der sich zwar vieleicht über htaccess oder über Deine Applikation selbst authentifiziert hat, aber nicht direkt am Server. Lesen und Schreiben und alle Operationen führt der Webserver selbst durch. Unter SuSE beispielsweise wäre das im Standard der User "wwwrun".

          Wenn man den Begriff Sicherheitsrisiko nicht so eng faßt, so ist eigentlich jeder unverschlüsselter Datentransport ein solches. Das hat allerding s nichts mit PHP zu tun. Während des Uploads wird das auf dem Weg zum Zielserver quer über die Internet-Infrastruktur gejagd, unterwegs gechached usf. Mitunter snifft jemand unterwegs mit der sein großes passives Ohr in die Leitung hängt. Um dem zu entgegnen ist die Verbindung von Client zu Server über einen verschlüsselten Kanal abzuhandeln -> SSL-Verbindung.

          Kommentar


          • #6
            Ja, ich hab mittlerweile eingesehen daß das wohl ein Denkfehler meinerweits war. Trotzdem Danke !

            Kommentar

            Lädt...
            X