PHP - Защита цифровых загрузок - PullRequest
6 голосов
/ 24 марта 2011

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

Я хочу сделать файлы доступными для загрузки моими пользователями, но не хочу, чтобы они имели прямой доступ к папке загрузки.Кроме того, я хочу, чтобы ссылка на скачивание была доступна только в течение установленного периода времени или для одной загрузки.

Может ли кто-нибудь указать мне правильное направление?

Ответы [ 3 ]

10 голосов
/ 24 марта 2011

Лучший способ - делегировать управление загрузкой после проверки моду для apache

x_sendfile

https://tn123.org/mod_xsendfile/

Использование:

<?php
...
if ($user->isLoggedIn())
{
    header("X-Sendfile: $path_to_somefile");
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"$somefile\"");
    exit;
}
?>
<h1>Permission denied</h1>
<p>Login first!</p>

В основном, когда вы отправляете заголовок X-Sendfile, мод перехватывает файл и управляет загрузкой для вас (файл может быть расположен в любое время вне виртуального хоста).

В противном случае вы можете просто реализовать простой файл download.php, который получает идентификатор файла и печатает содержимое с помощью readfile после проверки входа в систему

1 голос
/ 24 марта 2011

Всего лишь несколько примеров: вы можете поместить свои файлы вне корневого каталога документов веб-сервера или в каталог, защищенный файлом .htaccess с правилом «запретить все»;затем вы доставляете файлы с помощью пользовательской функции PHP, которая устанавливает правильные заголовки (тип mime, размер файла и т. д.) и возвращает файл.

Вы можете создавать ссылки с уникальными идентификаторами на основе хэшей MD5 или SHA1 - aПравило mod_rewrite указывает идентификатор на ваш файл PHP, вы ищете идентификатор в базе данных и проводите проверку времени, например,

example.com/downloads/73637/a8d157edafc60776d80b6141c877bc6b

переписывается в

example.com/dl.php?id=a8d157edafc60776d80b6141c877bc6b&file=73637

Вот пример выполнениято, что вы хотите с nginx и PHP: http://wiki.nginx.org/HttpSecureLinkModule

0 голосов
/ 30 июня 2014

" Безопасные ссылки для загрузки ", PHP-скрипт может быть использован для скрытия URL-адреса загрузки или переименования загружаемого файла, он имеет возможность хранения под веб-корнем и для файлов, хранящихся выше веб-корня с абсолютными URL-адресами http также.

...