Как правильно разместить секретные файлы на сайте?

Kostyab

Новичок
Как правильно разместить секретные файлы на сайте?

Привет всем!

Тема такая: есть область сайта для зарегистрированных юзеров.
Им доступны некие файлы (PDF, DOC) для скачивания. Как сделать так, чтобы эти файлы были недоступны всем остальным?
То есть, если кто-то угадает имя файла и наберет строку www.site.ru/folder/secret/file.pdf -- запросто его скачает.
Можно ли жестко запретить поисковым машинам индексировать эти файлы? Достаточно ли записи в файле robots.txt, или этот файл - не панацея?
Я использую метод аутентификации пользователей из книжки "Разработка web-приложений на PHP и MySQL (Лаура Томсон, Люк Веллинг) - глава 24, стр.411, то есть с помощью сессий.

Кстати, раз уж зашел разговор про книгу, кто-нибудь купил 2-е издание этой книги? Стоит ли ее заказать, или все то же самое и не надо париться?

Спасибо!
 

Кром

Новичок
Сессии вполне нормальный вариант. Файлы можешь прятать где угодно, хоть за пределами web-дерева. И отдавать их через скрипт, в том случае если пользователь авторизован и т.д. Вариантов масса, на самом деле.

О книгах здесь постоянно поднимаются темы. Ищи в поиске.
 

alexhost

Guest
Добавлю что сами файлы лучше размещать действительно за пределами web-дерева, как и советует Кром, а скачку производить с использованием БД через PHP, чтобы пользователь даже и не знал истинный путь к файлам.
 

Фанат

oncle terrible
Команда форума
книга - отстой.

-~{}~ 13.02.05 00:07:

alexhost
а можно поподробнее про БД и её роль в скачивании файлов?
 

alexhost

Guest
Фанат, нет проблем, расскажу,
я как-то делал эдакую "систему закачек" которая работает так (вкратце):
1. Есть система администрирования, в которую в вносятся имена файлов (они будут доступны для скачивания в дальейшем), папка для хранения файлов определена заранее
2. Скачивание файлов происходит через обращение к БД, если есть такой файл и он разрешен для скачивания то выдаю пользователю файл сразу на загрузку + одновременно веду для себя статистику т. е. записываю в БД сколько пользователь скачал (ес-но учитываю IP), откуда пришел и т. д. Если файл не разрешен для скачивания а кто-то его спрашивает то выдаю страницу предупреждения и отправляю на мыло админу сооющение warning со всеми параметрами пользователя (ip и т. д.)
 

Фанат

oncle terrible
Команда форума
Стоп.
Я тебя не спрашивал, какую роль играет БД в деле авторизации и ведения логов.
Я тебя спрашивал, зачем нужна БД при скачивании файлов.
Надо было не плести галиматью, а честно ответить "Ой, лажанулся - БД тут не при чём".
тем более, что ты в этом своем наспех высосанном из пальца тексте забыл про сокрытие истинного пути к файлам, в котором помогает БД.

На первый раз прощаю, но впредь будь внимательнее.
 

alexhost

Guest
Фанат, да, через БД я действительно скрывал истинный путь к файлам думаю это и так понятно, я об этом выше уже писал. БД еще как причем.
 

neko

tеam neko
надо раз и на всегда для себя уяснить
что никакой связи между url и файлам нет
вообще никакой
если только вы сами ее не сделали

после чего подобные вопросы отпадут
 

Фанат

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

итак, начинаем представление.
файлы лежат в недоступной из веб директории.
то есть, местоположение их и так скрыто.
да хоть бы если бы и было открыто - толку от этого все равно не было бы никакого.
Но положение скрыто.
файлы отдаются скриптом.
скрипт читает файл, из каталога, и отдает пользователю.

А теперь, дорогой alexhost, расскажи нам, как ты для закачки кладешь файл в БД, а потом из бд отдаёшь.
Ну, или что-нибудь другое придумай, посмешнее.
Фантазия, как я вижу, у тебя богатая.
Мы все тебя внимательно слушаем.
 

alexhost

Guest
Фанат, файлы закачиваю по FTP вручную, а через систему администрирования добавляю их имена в БД, при добавлении скрипт проверяет существование такого файла на сервера и ставит флаг разрешения скачивания (можно также в моей системе деактивировать этот флаг), далее просто отдаю файл из БД пользователю (тут процедура понятная) или ты хочешь чтобы я тебе код написал? :)
 

Фанат

oncle terrible
Команда форума
Код имеет смысл приводить, только если он такой же смешной.

Судя по всему, ты решил попробовать себя в роли фокусника.
Стало быть, кладём в базу ИМЯ файла, а отдаем из неё - уже сам файл! Браво!!!
Молодец, ты оправдал мои ожидания.
Креатиф жжот. Афтар пешы ещо.
 

alexhost

Guest
Фанат, не совсем понимаю твоей иронии, у меня эта система работала успешно и в чем для тебя сложность выдать файл через PHP пользователю на закачку, если тебе mysql подсунула путь к этому файлу? В базу кладем имя СУЩЕСТВУЮЩЕГО файла. тут все 2x2=4.
 

Фанат

oncle terrible
Команда форума
У меня сложностей никаких нет.
Это у тебя сложности с выражением своих мыслей.
И с абстрактным мышлением.
В частности, ты никак не можешь объяснить - какое отношение имеет к закачке фала то место, в котором хранится его имя.
И почему хранить надо обяхательно в БД.

О том, какой смысл держать в БД имя СУЩЕСТВУЮЩЕГО файла, если файл и так существует и имеет своё имя, я тебя уже боюсь спрашивать.
Чувствую, ты напишешь целый роман, а мне уже спать хочется.
 

alexhost

Guest
Фанат, так как я отдаю файл через БД то пользователю неизвестно истинное положение файла и следовательнро он не может его просто скачать через http по адресу - основная идея такая. В БД храню потому, что там же веду статистику - для меня это было удобно, другие могут предложить что-то свое, я про свой подход рассказал, возможно, что автору топика он понравится.
Да, спать действительнро кончится, давай продолжим завтра :)
 

Фанат

oncle terrible
Команда форума
"Девелоперы тоже плачут", серия 233.
Главный герой в коме.
так как я отдаю файл через БД то пользователю неизвестно истинное положение файла
при чем здесь БД, и какая связь между ней и файлом, если файл все равно лежит в недоступном месте, и отдается все равно скриптом - наж герой ответить так и не смог.

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

alexhost

Guest
Фанат, мне кажется что надо быть повежливее и не хамить, я все понятно вверху изложил и кому надо - поймут, кому надо попонтоваться - значит есть на то время. я по этой теме закруглился.
 

Kostyab

Новичок
Привет, ребята!
Я смотрю, тут целая дискуссия образовалась. Только сегоднгя смог залезть в Инет.

Я понял основную идею.
Начну сегодня ее осуществление.
Вы не против, если у меня появятся вопросы, я их озвучу.

Спасибо!

З.Ы. Кстати, эту книгу (что отстой) мне как-раз порекомендовали на этом форуме, только это было года два назад - тусовался тогда такой RomikChief.
 

Groove

Новичок
Автор оригинала: Kostyab
З.Ы. Кстати, эту книгу (что отстой) мне как-раз порекомендовали на этом форуме, только это было года два назад - тусовался тогда такой RomikChief.
:)))
 
Сверху