Подтвердить что ты не робот

Безопасные файлы для скачивания

Я хочу иметь папку, позволяющую вызывать ее docs, которая содержит документы, которые могут загружать пользователи. У них очень чувствительная информация. Как лучше всего защитить папку. Я исхожу из фона PHP, поэтому хочу знать, не упустил ли я что-нибудь.

Я буду защищать папку с .htaccess, а также когда пользователи нажимают кнопку загрузки, они никогда не отображаются в папке. Загрузка осуществляется через них с помощью php, удаляя имя папки.

Конечно, чтобы защитить область пользователей, я внедряю санитарию и проверку на все поля ввода, а также наблюдаю за SQLInjections. Использование SSL-соединения. Выключили все предупреждения php. Защищенная область использует переменные SESSION для контроля доступа и повторной проверки пользователей для выполнения особых задач, таких как смена паролей. Кроме того, функция тайм-аута составляет 10 минут, после чего пользователь должен повторно вводить данные.

Я стараюсь быть настолько тщательным, насколько это возможно, поэтому любой совет, какой бы небольшой он ни был, приветствуется.

4b9b3361

Ответ 1

Поместите файлы за пределы webroot. Затем, используя PHP, передайте файл, но script. Таким образом, никто не может напрямую ссылаться на файл и обходить ваши элементы управления. (Естественно убедитесь, что script, который делает это только после проверки, что у пользователя есть разрешение на получение этого файла).

Пример 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;
?>

Ответ 2

В дополнение к John Conde вы можете переписать dl-url в другую нечувствительную папку для honeypot пользователя, который пытается преодолеть их доступ.

И добавьте этот тип правил в свой htaccess

Options -Indexes

<files .htaccess>
  order allow,deny
  deny from all
</files>

#Add all file you want to protect except the one you share...
<FilesMatch "\.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
  Order Allow,Deny
  Deny from all
</FilesMatch>