Seite 1 von 2

Verzeichnisse absichern

Verfasst: 17.12.2005 12:54
von Pepperoni
Hallo Leute,

Seit einigen Tagen beschäftige ich mich mit PHP.

Ich habe einen Linux Webserver mit PHP laufen.
Dort gibt es ein Verzeichnis für einen User in dem alle für den Loginvorgang benötigten Dateien liegen. Login wird über Sessions geregelt. Das klappt auch, aber das ist ja irgendwie noch nicht allzu sicher.
Innerhalb des Userpfades liegen ja weitere Pfade und z.B. Textdateien. Diese kann man ja, wenn man will einfach durch Eingabe in der URL Leiste des Browsers aufrufen.
Wenn ich ein Login mit htaccess realisiere, geht der Zugriff auf Dateien ohne Autentifizierung definitiv nicht, aber mit der Sessionlösung schon.

Ich würde aber gern den Login via PHP beibehalten, da ich dies wesentlich ansprechender finde.

Meine Frage ist also, wie kann ich die darunterliegenden Pfade so absichern, das ein Zugriff ohne Autentifizierung nicht möglich ist.

Jetzt hab ich mir gedacht, ich erzeuge zum Zeitpunkt des Einloggens mit Hilfe der Session ID temporär einen Link welcher dann zu den Userdaten zeigt und löche diesen Link, wenn der User sich abmeldet. Quasi so, das alle Daten nicht im Userpfad liegen, sondern irgendwo anders auf der Platte.

Ist das die einzige Möglichkeit, oder geht das auch irgenwie einfacher.

MfG
Pepperoni

Verfasst: 17.12.2005 12:58
von S2B
Was soll denn mit den Dateien passieren? Soll der User sie runterladen können?

Verfasst: 17.12.2005 13:04
von Pepperoni
also es gibt Pfade in denen liegen z.b. PDF Dateien drin. Diese soll natürlich nur der entsprechende User öffnen können

Verfasst: 17.12.2005 13:44
von S2B
Du könntest z.B. das Verzeichnis einfach mit einer .htaccess schützen:

Code: Alles auswählen

<Files "*.*">
    Order allow,deny
    Deny from all
</Files>
Dann könntest du mit einer file.php auf die Dateien zugreifen:

Code: Alles auswählen

// AUTH-Check (session_start() etc.)
$filename = (isset($_GET['file'])) ? $_GET['file'] : '';
// $filename bearbeiten (Ordner hinzufügen etc.)
if (file_exists($filename) && $file = @file_get_contents($filename))
{
    header('Content-type: <mimetype>');
    header('Content-Length: ' . strlen($file));
    echo $file;
}
Höchst wahrscheinlich musst du noch einiges in Sachen Sicherheit unternehmen und ob die Headers alle stimmen weiß ich auch nicht so genau, aber zumindest ist es mal ein Ansatz. :wink:

Verfasst: 17.12.2005 14:11
von Pepperoni
Also ich kann htaccess benutzen und mich trotzdem über php Session authentifizieren, ohne für htaccess mich noch mal zu authentifizieren?

Nur für mein Verständniss.
Die Datei htaccess verweist nicht auf ein passwort File sondern sagt in diesem Fall lediglich aus, dass jeglicher Zufriff erst einmal geblockt wird.
Mit meiner php Datei kann ich dann Zugriff auf diese Files erlangen, fall der User eine Session gestartet hat.

Jetzt hab ich ein Menü welches ein Perl Script startet, welches mit Hilfe der übergabe Parameter dann diesen Ordner durchforstet und alle darin enthaltenen Dateien auf dem Schirm auflistet, damit diese dann vom Benutzer geöffnet/heruntergeladen werden können. Die Ausgabe des Perl Scriptes ist ja HTML und nicht PHP, geht dann die Überprüfung auch oder muss ich mein Perlscript in PHP umschreiben?

Verfasst: 17.12.2005 16:54
von S2B
Pepperoni hat geschrieben:Die Ausgabe des Perl Scriptes ist ja HTML und nicht PHP, geht dann die Überprüfung auch oder muss ich mein Perlscript in PHP umschreiben?
PHP juckt wie alle anderen Programme, die auf dem Server direkt laufen (also auch Perl), absolut gar nicht, was in einer .htaccess steht. Die Datei ist nur für den Apache gültig, für alle anderen Programme ist sie nur eine normale Textdatei. :wink:

Verfasst: 17.12.2005 18:53
von Pepperoni
Also vielen Dank schon mal für deine Hinweise.

Komme grad vom Weihnachtsmarkt... Lecker Bratwurst...

Hab das jetzt mal ausprobiert. Also Das sperren des Zugriffes auf die Dateien funktioniert so, und das Script kann auch den Ordner auflisten und mir die Dateien auf dem Schirm als Link/(href) augegeben, aber öffnen kann ich sie nicht, da ich ja dann nicht mehr über php die Datei öffne, sondern ein normales HTML Kommando ausführe.

Verfasst: 17.12.2005 19:35
von S2B
Und da würde ich dann so eine file.php einbauen. :wink:

Verfasst: 17.12.2005 20:01
von Pepperoni
Könntest du mir da evtl mal ein Beispiel posten, wie ich in die Ausgabe meines Perlscriptes, welches mir Links zu den Dateien ausgibt, mit dem php file verbinde. Das ist mir irgendwie nicht so richtig klar. Ich müsste ja das z.B. PDF File dann mit diesem PHP Code aufrufen. Aber wie geht das?

Verfasst: 17.12.2005 20:15
von S2B
Naja, da, wo das Perlscript bisher ordner/test.pdf ausgegeben hat, muss jetzt file.php?file=ordner/test.pdf ausgegeben werden. Den Rest machst du dann per php in der file.php. :wink: