2012-05-31 2 views
12

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

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

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

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

ответ

28

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

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

В качестве альтернативы положить файлы вне веб-корень, вы можете также найти некоторую комбинацию прав доступа к файлам, что позволяет PHP читать файл, но Безразлично 't позволить Apache обслуживать его до мира, например 'chmod o-rwx', другими словами, удалять разрешения для« других ». –

+0

Я пробовал этот код, и он отлично работает, но он загружается на мой компьютер. Как я могу отобразить изображение с этого кода? – crazyoxygen

+0

и как насчет тайм-аутов? –

0

Помимо Джон Конда, вы можете переписать Д.Л. 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> 
+0

Благодарим за предложение. Не могли бы вы объяснить это чуть больше. Вы предлагаете положить файл загрузки в папку honeypot, а затем заблокировать все файлы? – Somk

+0

В принципе, да! Идея состоит в том, чтобы скрыть реальную папку и заблокировать все попытки доступа к файлу внутри папки и снаружи. – Dark

Смежные вопросы