| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Запрет доступа к определённым файлам на сервере |
| Автор: ruX 25.5.2009, 20:11 |
| Как осуществяется ограничение прав доступа а ресурсам на сервере? Допустим, имеется какая-то картинка на сервере. Один юзер копирует адрес на неё другому, но у другого нет прав на просмотр её. Как это реализовать? Пропускать вывод изображения(а того хуже если это какой-нить архив на 50 метров) через скрипт - как то не серьёзно. Писать плагин для апача - тоже не интересный вариант. Больше ничего в голову не приходит. Если я правильно понял - то на сервере по любому логика должна проверять права, иначе никак. Для начала хотя бы как реализовать примитив: доступ к определённой картинке может иметь только авторизированный пользователь. Подскажите пожалуйста в какую сторону смотреть? |
| Автор: enof 25.5.2009, 20:21 |
ну уж явно не скриптом на пхп отдают. |
| Автор: ruX 25.5.2009, 21:32 |
Поэтому и спрашиваю я посмотрел, на сколько я понял можно разве что логин-пароль использовать. Опять же авторизация должна быть на моих скриптах. Если я правильно понял можно написать модуль авторизации, но это уже не так интересно. Тогда стоит посмореть в сторону cgi, например на си? |
| Автор: SneG0K 25.5.2009, 21:35 |
А на чем по твоему? Давай не разводить холиваров |
| Автор: gta4kv 25.5.2009, 22:55 | ||
присоединяюсь к предыдущему оратору, небольшому файл хостингу даже нету смысла напрягаться с чем то другим, заголовоки и readfile вполне достаточно. |
| Автор: enof 25.5.2009, 23:05 |
| Решь шла о файлообменниках и соответственно я сразу подумал о больших файлах и огромном количестве пользователей. Для мелких сервисов согласен с readfile. |
| Автор: ruX 26.5.2009, 09:07 |
| Значит вывод: можно пропускать через php readfile? А как быть например с лимитом времени исполнения, устанавливать принудительно? Ведь канал у юзера может быть очень узкий. И по идее, этот лимит должен зависить от размера файла. Для картинки размером 300кб это одно, для, например, мп3 в 5метров это другое |
| Автор: SneG0K 26.5.2009, 09:13 | ||
Угу. Поставь сразу большой лимит, скрипт отработает и завершится... Если это картинки, то можно делать вывод через GDI+ |
| Автор: bazzjr 26.5.2009, 10:17 | ||
Ну мне так думается все это можно реализовать посредством: Куки + Сессии + некий идентификатор регистрации(профиля) пользователя Идея примерно такая... Каждый раз когда "зарегистрированный" ползователь хочет скачать какой либо файл, то в адресной строке прибавляем некий ID, который позволяет ему скачивание. Если эту ссылку дать другому пользователю, то когда пользователь коннектится, система проверяет адрес, и смотрит тот самый ID, далее проверяет КУКИ, и если все нужные данные совпадают, система дает добро на скачивание или просмотр. |
| Автор: icewind 26.5.2009, 10:29 |
| Мне кажется можно обойтись без увеличения временного лимита... И без лишней нагрузки. Можно создать директорию для выдачи. При запросе к скрипту, тот создает в директории выдачи папку, название которой будет содержать айпишнек (можно ip2long) и timestamp для обеспечения временного лимита и копирует туда нужный файл. Юзера предупредить что ссылка будет активна n часов. Далее сделать маленький скрипт, который будет проверять по названиям в директорий время создания и чистить устаревшие и повесить на крон. Можно таким образом избежать потоковой отдачи файлов средствами php... Естественно это для больших файлов... Картинки (50 - 350kb) можно и потоком отдать... |
| Автор: gta4kv 26.5.2009, 10:50 | ||
Из личного опыта, 2к уникальных обращений к файлу в течение часа не вызывали у сервера ничего кроме смертной скуки. |
| Автор: ruX 26.5.2009, 23:52 | ||||||
ссылка должна быть постоянной, это обязательно
Всё равно тут присутствует активная логика, т.е. пропускать изображение через скрипт.
Очень хочется надеятся. А если много одновременных соединений? Ведь пхп прилично памяти ест, где то видел что в среднем 8 метров на обработку 1 запроса. Или не стоит заморачиватсья с этим пока проблема не проявит себя? |
| Автор: ruX 30.5.2009, 13:53 |
| Ещё кое-что обнаружил ВКонтакте не даёт просматривать фото если ввести адрес страницы на которой она лежит. Но если знать прямую ссылку на изображение(в том числе и на большую аватару), то можно даже не логинившись просматривать. Это нормально? Я подумал: если я буду пропускать через скрипт, то очень просто можно будет досить - достаточно открыть кучу соединений, они ведь не прервуться сами(учитывая что я поставлю большой лимит времени испольнения скрипта). А если при выдачи изображения я буду проверять на количество соединений от пользователя, время между запросами, то это к запросу о правах доступа к БД добавиться ещё и проверка интервалов времени запросов Или я через чур заморачиваюсь? |