Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

PHP, веб, пароли, файлы   Найти похожие ветки 

 
KSergey ©   (2010-02-11 10:02) [0]

Не по теме форума, но спецы здесь есть, хотелось бы посоветоваться.

Нужно сделать скачивание файлов по паролю. Собственно интересует как на PHP сделать такую штуку: лежит файл, PHP-скрипт авторизует пользоватея и отдает ему файл. Собстевнно не понятно для меня "как пропустить файл через скрипт", если так можно выразиться.

Интересуют общие идеи и ключевые слова по которым поискать инфу.


 
tesseract ©   (2010-02-11 11:24) [1]


> Собстевнно не понятно для меня "как пропустить файл через
> скрипт",


эммм. Сгенерировать ссылку на файл и перенаправить на эту страницу пользователя ?


 
McSimm ©   (2010-02-11 11:29) [2]


> "как пропустить файл через скрипт"

fpassthru()


> общие идеи и ключевые слова

header, Content-Type


 
palva ©   (2010-02-11 11:31) [3]

Самое простое выдать заголовки и включить файл в скрипт по include.
Если, конечно, в этом файле нет последовательности символов <?

Можно отдать файл функцией echo или print


 
KSergey ©   (2010-02-11 12:29) [4]

> palva ©   (11.02.10 11:31) [3]

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


 
KSergey ©   (2010-02-11 12:29) [5]

> palva ©   (11.02.10 11:31) [3]

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


 
KSergey ©   (2010-02-11 12:39) [6]

> tesseract ©   (11.02.10 11:24) [1]
> Сгенерировать ссылку на файл и перенаправить на эту страницу пользователя ?

эээ... а как убедиться, что пользователь аутоитентифицированный? ну т.е. чтобы нельзя было с заранее известной ссылкой прийти


 
brother ©   (2010-02-11 12:50) [7]

> а как убедиться, что пользователь аутоитентифицированный?

ставь куки в них много чего пиши, ну, и длительность сессии не забудь)


 
KSergey ©   (2010-02-11 12:53) [8]

> McSimm ©   (11.02.10 11:29) [2]
> fpassthru()

То что надо, спасибо!

толко маленький вопрос: а как сообразить какой контент-тайп выдавать? ну т.е. файлы разные могут быть в моем случае: pdf, xls, png

А судя по примерам в сети - конкретный тип надо указать...
Или надо прошивать таблицу соответствий по расширению, например?


 
brother ©   (2010-02-11 12:59) [9]

> а как сообразить какой контент-тайп выдавать?

расширение файла распарсить?


 
KSergey ©   (2010-02-11 13:00) [10]

> KSergey ©   (11.02.10 12:53) [8]

вру, есть достаточно универсальные примеры

Спасибо всем большое!


 
KSergey ©   (2010-02-11 13:02) [11]

> brother ©   (11.02.10 12:50) [7]
> ставь куки в них много чего пиши, ну, и длительность сессии не забудь)

Если я не пропускаю "сквозь скрипт", ну т.е. формирую реальную ссылку на файл - то, на сколько я понимаю, куки меня никогда не спасут.

Впрочем, могу сильно заблуждаться.


 
brother ©   (2010-02-11 13:05) [12]

> Если я не пропускаю "сквозь скрипт", ну т.е. формирую реальную
> ссылку на файл - то, на сколько я понимаю, куки меня никогда
> не спасут.


вообще да, но если Я тебя правильно понял, то:
твой скрипт получает строку запроса (не на прямой файл), смотрит на куки и понеслась!!!)


 
KSergey ©   (2010-02-11 13:07) [13]

> brother ©   (11.02.10 13:05) [12]
> твой скрипт получает строку запроса (не на прямой файл), смотрит на куки и понеслась!!!)

Дык! о том и вопрос, как сделать "понеслась" :)
McSimm уже подсказал.


 
brother ©   (2010-02-11 13:08) [14]

а понял ;) ну, понеслась!!!))))))))


 
antonn ©   (2010-02-12 01:45) [15]


> Самое простое выдать заголовки и включить файл в скрипт
> по include.
> Если, конечно, в этом файле нет последовательности символов
> <?
>
> Можно отдать файл функцией echo или print
>

readfile() если уж на то пошло, если не реализовывать докачку.

Кстати, раньше не понимал, как можно воссоздать уязвимость "закачать файл на сайт и проинклудить", вот теперь вижу...


> KSergey ©   (11.02.10 12:39) [6]
>
> > tesseract ©   (11.02.10 11:24) [1]
> > Сгенерировать ссылку на файл и перенаправить на эту страницу
> пользователя ?
>
> эээ... а как убедиться, что пользователь аутоитентифицированный?
>  ну т.е. чтобы нельзя было с заранее известной ссылкой прийти

запоминать его (учетные данные (код, например))+браузер+remote_IP+еще что нибудь, на их основе вычислять некий хеш, хеш передавать в GET (куков может не быть, а с GET ссылку можно удобно передать в качалку файлов).
для отдачи файла скриптом можно поискать class.httpdownload.php


 
KSergey ©   (2010-02-12 17:02) [16]

> antonn ©   (12.02.10 01:45) [15]
> > Самое простое выдать заголовки и включить файл в скрипт по include.
> Кстати, раньше не понимал, как можно воссоздать уязвимость
> "закачать файл на сайт и проинклудить", вот теперь вижу.

хм, а и правда.
Хорошо, что в моём случае закачка внешними пользователями не предусмотрена по ТЗ :)


 
antonn ©   (2010-02-12 19:35) [17]

ну все равно, сделать правильный способ отдачи файла (+если апач - запретить выполнение из этой папки) и не будет потенциальной дырки со стороны админки.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.063 c
15-1265319012
Юрий
2010-02-05 00:30
2010.08.27
С днем рождения ! 5 февраля 2010 пятница


2-1268894663
Delphist
2010-03-18 09:44
2010.08.27
обновление информации в гриде


2-1274192491
Student :)
2010-05-18 18:21
2010.08.27
HTTP component is busy


2-1271443216
fiascko
2010-04-16 22:40
2010.08.27
invalid floating point operation


2-1272631952
HF-Trade
2010-04-30 16:52
2010.08.27
Динамический TTimer - как узнать Tag таймера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский