Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/39: Рейтинг темы: голосов - 39, средняя оценка - 4.64
43 / 43 / 16
Регистрация: 16.05.2009
Сообщений: 372
1

Дать доступ к файлу только при переходе к нему с определенной страницы

25.10.2012, 15:04. Просмотров 7154. Ответов 12
Метки нет (Все метки)

Добрый день!
Описываю ситуацию:
Имеется файл, размещенный на сервере. Необходимо разрешить доступ к файлу (скачать его) только при переходе к нему с определенной страницы. При этом сделать невозможным скачку при простом написании в адресной строке пути к файлу...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2012, 15:04
Ответы с готовыми решениями:

Как дать доступ к файлу только одному процессу?
Здравствуйте , как заблокировать(скрыть файл) доступ к одному файлы и разрешить доступ только...

Изменение только ЧАСТИ страницы при переходе
Привет всем, подскажите, пожалуйста, как сделать чтоб при переходе на ссылки сайта обновлялось...

Дать пользователю доступ к файлу на чтение и выполнение
есть ли команда в cmd.exe, которая даёт пользователю доступ к файлу в виде "чтение и выполнение"

Доступ к txt файлу только при наличии определенного ключа
Как реализовать доступ к txt файлу по определенному ключу, передающемуся в get запросе? Пример:...

12
886 / 352 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
25.10.2012, 17:13 2
PresAlexandr, Это функция CMS: При заливке файлов через CMS в которой включена специальная функция она заменяет ссылку на файл своей, в которой с помощью переменной referer проверяет откуда пришёл посетитель и если результат её не удовлетворяет - то она пишет ошибку
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16812 / 6690 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
Завершенные тесты: 1
26.10.2012, 10:05 3
а на пыхе не подойдет?
1
43 / 43 / 16
Регистрация: 16.05.2009
Сообщений: 372
29.10.2012, 10:57  [ТС] 4
KOPOJI, пойдет) Есть вариант?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16812 / 6690 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
Завершенные тесты: 1
29.10.2012, 11:02 5
в скриптах/скрипте, откуда возможен переход на скачивание пишете
PHP
1
<?php define('__ACCESS_TO_DOWNLOAD__', true); ?>
можете свое имя для константы определить
А в скрипте где должно происходить скачивание прописываете
PHP
1
2
3
4
5
6
7
<?php if(defined('__ACCESS_TO_DOWNLOAD__')) : ?>
здесь весь код страницы
......
......
<?php else: 
#здесь либо редирект на другую страницу, либо сообщение какое то выводите
endif;
1
43 / 43 / 16
Регистрация: 16.05.2009
Сообщений: 372
29.10.2012, 11:08  [ТС] 6
KOPOJI, это не спасет от прямого доступа через адресную строку...

Был вариант с подменой .htaccess, но это создает лишь видимый эффект: файл будет доступен некоторое время для всех...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16812 / 6690 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
Завершенные тесты: 1
29.10.2012, 11:24 7
PresAlexandr, да ну что вы говорите
создайте две страницы, file1.php и file2.php
file1.php
PHP
1
2
<?php define('Constanta',true); ?>
<a href="./file2.php">GO</a>
file2.php
PHP
1
2
3
4
5
6
<?php if(defined('Constanta')) : ?>
Перешли со скрипта, выполняем какой то скрипт..
<?php else : ?>
Вручную забили адрес, ща редирект сделаю
<meta http-equiv="Refresh" content="5;URL=file1.php">
<?php endif; ?>
А теперь попробуйте и по ссылке перейти, и вручную забить

Добавлено через 1 минуту
хотя погодите, я че то накосячил

Добавлено через 2 минуты
пардон, это только при подключении работает..

Добавлено через 43 секунды
ща че нить придумаю

Добавлено через 3 минуты
времянку можно такую
HTML5
1
2
3
4
<form method="post" action="./file.php" name="acc">
<input type="hidden" name="hid" value="1" />
</forM>
<a href="./file.php" onclick="document.forms['acc'].submit(); return false">GO</a>
PHP
1
2
3
4
5
6
<?php if(isset($_POST['hid'])) : ?>
Перешли со скрипта
<?php else : ?>
Вручную забили адрес, ща редирект сделаю
<meta http-equiv="Refresh" content="5;URL=index.php">
<?php endif; ?>
0
43 / 43 / 16
Регистрация: 16.05.2009
Сообщений: 372
29.10.2012, 11:27  [ТС] 8
KOPOJI, я понял Ваш вариант с редиректом. Это решение первой части моей задачи, которую я уже сделал несколько иначе) У меня несколько иное: необходимо запретить доступ на скачивание, например, zip-архива. Средствами .htaccess возможно запретить либо полный доступ к файлу, либо ограничить его по диапазону IP, либо поставить пароль на файл. Ни один из вариантов мне не подходит)
Единственный вариант который я пока вижу осуществимым - это скриптом временно заменять файл .htaccess на тот, в котором доступ к файлу разрешен. Как только файл скачан пользователем, пихать старый .htaccess на место.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16812 / 6690 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
Завершенные тесты: 1
29.10.2012, 11:29 9
только две проблемы:
1. Можно подменить POST-данные
2. При отключенном javascript, увы, ничего не сработает..

Добавлено через 58 секунд
PresAlexandr, как вариант, можно и так, почему бы нет
1
43 / 43 / 16
Регистрация: 16.05.2009
Сообщений: 372
29.10.2012, 11:43  [ТС] 10
KOPOJI, по поводу первой проблемы: у меня скачивание производит авторизованный пользователь, следовательно, в качестве разрешения на выполнение скрипта можно сверять логин/пароль (что-то подобное Вашему варианту). Подмена POST-запроса в этом случае возможна только при краже пароля, поэтому не вижу препятствия...
Конечно, можно было бы поставить пароль на файл, но это приведет к двойной авторизации, что увеличивает нагруженность логики... А мне этого не надо.
0
41 / 41 / 2
Регистрация: 02.11.2012
Сообщений: 233
02.11.2012, 18:01 11
а как насчет скачивания файла через PHP?
Положить файл в недоступную из Web директорию и загружать примерно таким образом:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$file = '/path/to/file/';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
?>
Ну и, соответственно, сделать условие, при котором пользователь может скачать файл.
1
43 / 43 / 16
Регистрация: 16.05.2009
Сообщений: 372
05.11.2012, 13:52  [ТС] 12
spilva, что-то подобное я уже сделал, работает без сбоев)
0
41 / 41 / 2
Регистрация: 02.11.2012
Сообщений: 233
05.11.2012, 14:00 13
ну и прекрасно)
зачем еще огород городить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2012, 14:00

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

Определение id при переходе и поиск по нему в БД
Здравствуйте, я читал на этом форуме одну тему, в которой рассматривался вопрос интересный для меня...

Изменить фон блока при переходе к нему
Здравствуйте. На странице есть меню с ссылками на блоки на этой же странице. Ссылка вида: &lt;a...

Как дать доступ к игрушке со страницы сайта?
как дать доступ к игрушке на странице сайта? (Если вопрос не сюда прошу прошения)! Есть сайт на...

Дать доступ к деректории и файлам только Системе
Балуюсь с доступами. Дал полный доступ к деректории системе. Через cmd от имени систем не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.