Beskyttelse af filer i mappe

Hej,
jeg søger lidt idéer til opbevaring af bl.a. PDF-filer som kan tilgås hvis man eksempelvis er logget ind. Det er ikke filer der er genereret fra serveren, men blot uploadede filer i en mappe på serveren. Det kunne eksempelvis være indscannede fakturaer til et regnskab eller lignende. Hvor beskytter jeg bedst muligt disse filer?
Skal jeg evt bruge en 3. part?

Egentlig søger jeg muligheden for at kunne uploade filer som jeg kun kan se/bruge vha. html/php når en vis cookie er sat eller lignende. Lidt som hvis jeg uploader et dokument til dropbox, så kan jeg også kun hente dokumentet når jeg er logget ind, og ikke direkte via url'en.
Jeg ved ikke helt om det kræver at filerne, ved upload måske konverteres til base64 som så kan trækkes ud fra en database når man er logget ind, og altså ikke en løsning hvor man lagre filerne selvstændigt?

Hej @psto
Der er mange måder at gøre det på, både at gemme i databasen, hvor du nemt kan styre rettigheder, men går lidt på kompromis med performance, eller ved at placerer filerne udenfor webroot og hente dem ud med et PHP-script.
Den sidste løsning vil jeg anbefale, lad mig kort forklare hvordan det fungerer:
Din servers webroot er f.eks. /var/www/mitwebsite.dk/ her ligger alle dine filer, som er tilgængelige fra Internettet. Ved at placerer dine PDF-filer væk fra webroot i f.eks. /var/secure/pdfs/ er de ikke tilgængelige public fra internettet, men da dit PHP-script kan tilgå serverens fil-system, kan du stadig tilbyde en "download" mulighed, det ville se sådan her ud:
<?php
// Tjekker om brugeren har rettigheder til at se PDF-filen
if (!isset($harRettigheder)) {
header("Location: /du-har-ikke-adgang/");
die;
}
// Henter filen fra fil-systemet og sender afsted til browseren
$file = "/var/secure/pdfs/faktura4392.pdf";
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file));
header("Content-disposition: attachment; filename=".basename($file));
readfile($file);
Håber det hjælper dig lidt videre.
God dag.
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS