Вопрос № 55661: Есть проблема. На сайте 3 группы пользователей: гости (абсолютно бесправны, могут только зарегистрироваться), зарегистрированные (имеют кое-какие возможности) и авторизованные (оплатившие доступ к основной информации). Авторизованные пользователи име...
Вопрос № 55.661
Есть проблема. На сайте 3 группы пользователей: гости (абсолютно бесправны, могут только зарегистрироваться), зарегистрированные (имеют кое-какие возможности) и авторизованные (оплатившие доступ к основной информации). Авторизованные пользователи имеют возможность скачивать некоторую информацию в виде zip-архивов. Переход на страницу ссылок возможен только для пользователей с соответствующими правами, это реализовано. Ссылки на архивы не должны быть прямыми (чтобы нельзя было ее кинуть товарищу). Я так понимаю,
это можно реализовать модулем Apache mod_rewrite, но я с ним на "ВЫ" и хотелось сделать что-то попроще.
Найдено следующее решение (не претендую (пока :) ) на первооткрывателя, но еще нигде его не видел):
корень сайта: /home/user/public_html
был создан каталог /home/user/download (WEB-сервер доступа к нему, соответственно, не имеет). В него скинут архив, например, data.zip
В /home/user/public_html/.htaccess прописан путь:
php_value include_path .:/home/user/download
В /home/user/public_html создаю файл links.html, содержащий строку
<A href="/archive.zip?file=data" target="_blank">Какие-то данные</A>
и файл archive.zip (именно такой), следующего содержания:
В /home/user/public_html/.htaccess задаю:
AddType application/x-httpd-php .zip
При щелчке на ссылке пользователь получает файл с именем archive.zip, являющийся, фактически, копией архива data.zip. Если ссылкой воспользуется неавторизованный пользователь, его просто отправит в "корень" сайта. Решение рабочее, проверено практикой.
Вопроса есть 2:
1. Нет ли у этого решения незамеченных мной проблем с безопаснотью?
2. Может есть способ более "правильный"?
Отправлен: 16.09.2006, 23:47
Вопрос задал: Rootikmaks (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Ответ отправил: Загиров Рустам (статус: Практикант)
Ответ отправлен: 18.09.2006, 00:12 Оценка за ответ: 5 Комментарий оценки: Здравствуйте, Рустам. Хэшировать имена можно, но смысла не вижу - хотя сторонний человек и может задать известное ему имя в URL, но перед отправкой файла будет проверена его авторизация через механизм сессий и, если он не имеет нужных прав, то ничего не получит. Впрочем, как дополнительную меру защиты может и применю. А за заголовки отдельное большое
спасибо. Раньше все скачиваемые файлы имели одно имя - archive.zip. Не очень напрягало, но теперь все "как должно быть".