Erstellen eines sicheren Datei-Hosting-Servers für PDFs

8

Ich arbeite daran, eine Website zu entwickeln, auf der sich Kunden einloggen und verschiedene PDFs auf dem Server sehen können. Diese PDFs werden für den Client eindeutig sein und sollten nicht für jemanden zugänglich sein, der nicht eingeloggt ist. Das Abrufen der Dateien auf dem Server sollte kein Problem darstellen. Ich bin mir nicht sicher, wie ich sie den Endbenutzern bereitstellen soll / p>

Ich habe diese Art von Dingen mit Daten von SQL servers implementiert, die anstelle von Dateien geliefert werden, daher bin ich mir nicht ganz sicher, was der effektivste Weg ist, dies zu tun.

Die Website ist auf einem LAMP und meine minimale Erfahrung ist in PHP (aber wenn ein Framework oder eine andere Sprache dies einfacher machen würde, kann ich es lernen).

Ich bin wahrscheinlich in meinem Kopf, aber normalerweise bin ich, also wäre jede Eingabe großartig.

    
Will Meldon 24.05.2012, 19:11
quelle

3 Antworten

9

Legen Sie die Dateien außerhalb des Webstamms ab. Dann mit PHP übergeben Sie die Datei über ein Skript. Auf diese Weise kann niemand direkt mit der Datei verknüpfen und Ihre Steuerelemente umgehen. (Stellen Sie sicher, dass das Skript, das dies erst nach Überprüfung des Benutzers tut, die Berechtigung zum Abrufen dieser Datei hat.)

Beispiel PHP:

%Vor%     
John Conde 24.05.2012, 19:13
quelle
4

Der einfache Weg besteht darin, diesen Dateien lange zufällige Dateinamen zu geben (z. B. 20 zufällige Zeichen). Technisch werden sie für jeden zugänglich sein, aber es wird nicht möglich sein, die URL zu erraten, so dass nur autorisierte Personen Zugang haben.

Alternativ hat John Conde bereits eine Möglichkeit beschrieben, eine Datei aus einem PHP-Skript zu bedienen. Es wird eine kleine Leistungseinbuße entstehen, aber so sicher wie Ihr Code ist. Die einzige Sache, die ich hinzufügen kann, ist, dass, wenn Sie sie nicht außerhalb von Webroot platzieren können, Sie .htaccess verwenden können, um zu verhindern, dass Leute direkt auf die Dateien zugreifen.

    
Vilx- 24.05.2012 19:16
quelle
2

John hat den ersten richtigen Weg eingeschlagen, also füge ich die (wahrscheinlich minderwertige) Alternative hinzu: Serve es aus der Datenbank. Haben Sie einfach eine BLOB-Spalte für das PDF und lesen / speichern Sie die Dateidaten aus der Datenbank. Sie werden mit einem ziemlich großen Tisch enden, aber es wird funktionieren. Wenn Sie dafür den gleichen header() s verwenden müssen wie John gepostet hat, senden Sie einfach die Daten aus der DB anstatt aus der Datei.

Dies hat den Vorteil, dass Sie nicht sicherstellen müssen, dass Sie keine Dateikollisionen haben, usw.

    
zebediah49 24.05.2012 19:19
quelle

Tags und Links