Plaats de bestanden buiten de webroot. Gebruik vervolgens PHP en geef het bestand door via een script. Op die manier kan niemand rechtstreeks naar het bestand linken en uw controles omzeilen. (Zorg er natuurlijk voor dat het script dat dit doet alleen na verificatie van de gebruiker toestemming heeft om dat bestand op te halen).
Voorbeeld 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;
?>