Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: обратиться к файлу/папке только через скрипт
 
 автор: moonfox   (19.01.2008 в 18:26)   письмо автору
 
 

как можно организовать доступ к файлам в папке на сервере только через скрипт?
чтобы нельзя было напрямую указать путь к файлу через адресную строку

   
 
 автор: ddhvvn   (19.01.2008 в 19:09)   письмо автору
 
   для: moonfox   (19.01.2008 в 18:26)
 

в .htaccess
Deny from all

   
 
 автор: moonfox   (19.01.2008 в 19:36)   письмо автору
 
   для: ddhvvn   (19.01.2008 в 19:09)
 

да это работает
но вот незадача скрипт не может получить доступ к картинкам...
img src невыводит изображений

   
 
 автор: SHAman   (19.01.2008 в 20:51)   письмо автору
 
   для: moonfox   (19.01.2008 в 19:36)
 

Естественно. Потому что <imsg src/> - это обращение из браузера. Извне. А это и запрещает наш .htaccess.

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

Все src нужно будет переписать с src="./secretdir/file.jpg" на src="img.php?file.jpg".

Правда вот, не даст это нужного эффекта. Ведь всегда можно будет обратиться по адресу: img.php?file.jpg и получить нужную картинку.

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

   
 
 автор: moonfox   (19.01.2008 в 23:00)   письмо автору
 
   для: SHAman   (19.01.2008 в 20:51)
 

задача вообщемто другая

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

   
 
 автор: ddhvvn   (19.01.2008 в 23:38)   письмо автору
 
   для: moonfox   (19.01.2008 в 23:00)
 

Тогда
<Files film.mov>
Deny from all
</Files>

там же

   
 
 автор: SHAman   (19.01.2008 в 23:42)   письмо автору
 
   для: moonfox   (19.01.2008 в 23:00)
 

Ситуация та же самая. Если этот файл вставлен как object, а в src прописан адрес до файла, то его можно взять и вытащить. Иначе не получится.

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

Можно, опять же, обращаться к скрипту, которому передавать, скажем, идентификатор. По этому идентификатору, из базы вытаскивать путь к файлу, хватать его и принтить, принтить:)

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

   
 
 автор: mihdan   (20.01.2008 в 00:56)   письмо автору
 
   для: SHAman   (19.01.2008 в 23:42)
 

>Ведь на YouTube дают смотреть ролики. Но из html вы не получите адреса к ролику.
Полный бред, сам постоянно сливаю оттуда ролики своим скриптом

ЗЫ: mod_rewrite поможет

   
 
 автор: moonfox   (20.01.2008 в 01:17)   письмо автору
 
   для: mihdan   (20.01.2008 в 00:56)
 

по поводу 100% гаранти... хехе почему всегда заканчивают этми словами?:)))))
мне нужно всего лишь усложнить этот процесс до возможного и отгородить уже минимум 80% пользователей

mihdan
а что вы про mod_rewrite хотели сказать?
он же видоизменяет ссылки типа get
или яопять чего не знаю?)

   
 
 автор: bronenos   (20.01.2008 в 10:03)   письмо автору
 
   для: moonfox   (20.01.2008 в 01:17)
 

Делаете запрос /files/3 а открывается /files.php?id=3 например

   
 
 автор: SHAman   (20.01.2008 в 10:41)   письмо автору
 
   для: mihdan   (20.01.2008 в 00:56)
 

Может скажете где вы берете адрес самого файла?

А mod_rewrite не поможет. Какая стороннему юзеру разница, к чему обращаться: к mod/rewrite/files/file.mov или к files/file.mov? Это все равно, что отдавать файлы скриптом, передавая ему в параметрах имя файла. Скачать можно так же успешно.

   
 
 автор: moonfox   (20.01.2008 в 17:40)   письмо автору
 
   для: SHAman   (20.01.2008 в 10:41)
 

SHAman

какой по вашему мнению есть выход?

   
 
 автор: SHAman   (20.01.2008 в 17:51)   письмо автору
 
   для: moonfox   (20.01.2008 в 17:40)
 

никакого. Если вы выкидываете файл в сеть для просмотра, то вы, как ни старайтесь, открываете его для скачки. Если рассуждать логически: если браузер должен показывать мувик, то он должен его сначала ЗАГРУЗИТЬ. Если загрузить не может пользователь, то и браузер не сможет.

Думаю, нужно ограничивать доступ к странице с роликом, а не к самому ролику.

Можно попробовать помедитировать над вопросом: чем запрос на загрузку браузера отличается от запроса на загрузку юзером? С ходу не скажу. Возможно,разнятся какие-то заголовки. Но не уверен.

   
 
 автор: tricket   (20.01.2008 в 17:56)   письмо автору
 
   для: SHAman   (20.01.2008 в 17:51)
 

хе) да ничем! разницы никакой. Снифал.
И вообще зачем разбирать код чтобы узнать ссылку на файл) проснифал и скачал не парясь.
ХМ) по моему выход один... сделать так чтобы видео транслировалось в реальном времени... типа как организованы веб страницы с онлайн камерами... тока сделать трансляцию не с камеры а с файла(видео конечно).

   
 
 автор: SHAman   (20.01.2008 в 18:06)   письмо автору
 
   для: SHAman   (20.01.2008 в 17:51)
 

Попробовал. Потестил. Докладываю.

Делал структуру:
html:
<img src="test.pl"/>

Perl:
не буду вдаваться в подробности, но тупо отдаю картинку, а переменные окружения складываю в лог.

Если обращаешься к страничке html, посылается заголовок HTTP_REFERER, а если обращаться напрямую, то не посылается.

Короче, нужно палить непосредственно REFERER. И, если он равен адресу страницы, на которую планируется транслировать видео, то отдавать. Иначе - нет.

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

   
 
 автор: moonfox   (20.01.2008 в 18:20)   письмо автору
 
   для: SHAman   (20.01.2008 в 18:06)
 

http://ardeya.com.ua/odessa/

   
 
 автор: tricket   (20.01.2008 в 18:53)   письмо автору
 
   для: SHAman   (20.01.2008 в 18:06)
 

хорошо я был на странице, дальше пошёл в этом же окне на ссылку картинки, какой рефер будет подан? вуаля) страницы с которой я шёл!
да! а ты уверен что рефер действует всегда?! а именно не все браузеры его передают, плюс файрвол и антивирусник его блочат иногда, а так же прокси сервера и vpn подключения(через которые некоторые сети работают) тоже режут рефер.
ИМХО но через рефер я бы фильтровать не стал не в коем случае!!!

   
 
 автор: SHAman   (20.01.2008 в 19:05)   письмо автору
 
   для: tricket   (20.01.2008 в 18:53)
 

Предложите что-то получше. Больше идей нет.

Кстати, не понял я, куда вы собрались переходить, чтобы был передан рефер той же страницы, на которую вы пришли.

   
 
 автор: tricket   (21.01.2008 в 11:36)   письмо автору
 
   для: SHAman   (20.01.2008 в 19:05)
 

Вначале были на странице html где был рисунок, а дальше идём на сам рисунок.
В запросе на получение рисунка будет содержаться рефер предыдущей страницы!
А лучше я не знаю что... в том то и дело что невозможно хорошо защитится...

   
 
 автор: SHAman   (21.01.2008 в 11:45)   письмо автору
 
   для: tricket   (21.01.2008 в 11:36)
 

Рефер страницы будет только если вы тыкнули на ссылку. REFERER хранит данные о том документе, на котором была тыкнута ссылка, а не о прошлом посещенном документе. То есть, если сделать так:

<img src=file.php>


то все будет ОК. А если так:

<a href="file.php"><img src="file.php"></a>


тогда да, при нажатии на ссылку, рисунок будет выдан.

   
 
 автор: Unkind   (21.01.2008 в 13:28)   письмо автору
 
   для: SHAman   (21.01.2008 в 11:45)
 

> тогда да, при нажатии на ссылку, рисунок будет выдан.
Рисунок при таком коде будет загружен еще до нажатия на ссылку.

   
 
 автор: tricket   (21.01.2008 в 13:46)   письмо автору
 
   для: SHAman   (21.01.2008 в 11:45)
 

SHAman соглашусь с тобой! В RFC вот что написано,

14.36 Referer

   The Referer[sic] request-header field allows the client to specify,
   for the server's benefit, the address (URI) of the resource from
   which the Request-URI was obtained (the "referrer", although the
   header field is misspelled.) The Referer request-header allows a
   server to generate lists of back-links to resources for interest,
   logging, optimized caching, etc. It also allows obsolete or mistyped
   links to be traced for maintenance. The Referer field MUST NOT be
   sent if the Request-URI was obtained from a source that does not have
   its own URI, such as input from the user keyboard.


       Referer        = "Referer" ":" ( absoluteURI | relativeURI )

   Example:

       Referer: http://www.w3.org/hypertext/DataSources/Overview.html

   If the field value is a relative URI, it SHOULD be interpreted
   relative to the Request-URI. The URI MUST NOT include a fragment. See
   section 15.1.3 for security considerations.

В общем признаю твой способ хорошим! Интересно будет посмотреть на практике)

   
 
 автор: Loki   (21.01.2008 в 11:59)   письмо автору
 
   для: tricket   (21.01.2008 в 11:36)
 

Будет реферрер передан или нет - личное дело клиента и его броузера.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования