What security considerations should be taken into account when allowing file downloads through PHP?

When allowing file downloads through PHP, it is important to validate user input to prevent directory traversal attacks. Additionally, it is crucial to set appropriate file permissions to restrict access to sensitive files and to ensure that only authorized users can download them. Implementing secure file download functionality can help prevent malicious users from accessing or executing harmful files on the server.

<?php
$filename = $_GET['file']; // Assuming the file name is passed as a query parameter
$filepath = '/path/to/files/' . $filename;

// Validate user input to prevent directory traversal attacks
if (strpos($filename, '..') !== false || !file_exists($filepath)) {
    die('Invalid file path');
}

// Set appropriate file permissions to restrict access
if (is_readable($filepath)) {
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="' . basename($filepath) . '"');
    readfile($filepath);
} else {
    die('Access denied');
}
?>