Læg filerne uden for webroot. Brug derefter PHP til at sende filen gennem et script. På den måde kan ingen linke til filen direkte og omgå dine kontroller. (Sørg naturligvis for, at scriptet, der kun gør dette, efter at have verificeret, at brugeren har tilladelse til at hente den fil).
Eksempel på PHP:
<?php
if (!isset($_SESSION['authenticated'])) {
exit;
}
$file = '/path/to/file/outside/www/secret.pdf';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
?>