Đặt các tệp bên ngoài webroot. Sau đó, bằng cách sử dụng PHP, hãy chuyển tệp qua một tập lệnh. Bằng cách đó, không ai có thể liên kết trực tiếp đến tệp và bỏ qua các kiểm soát của bạn. (Đương nhiên hãy đảm bảo rằng tập lệnh chỉ thực hiện điều này sau khi xác minh người dùng có quyền truy xuất tệp đó).
PHP mẫu:
<?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;
?>