Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как закрыть доступ к папке
Форумы портала PHP.SU » » HTTP и PHP » Как закрыть доступ к папке

Страниц (2): [1] 2 »
 

1. armancho7777777 - 16 Ноября, 2011 - 20:25:35 - перейти к сообщению
Всем привет!
Как закрыть доступ к папке, что бы нельзя было обратиться к ней через адресную строку,
но при этом что бы скрипты на сайте могли обращаться к ней (в том числе через ajax), без проблем.
2. DeepVarvar - 16 Ноября, 2011 - 20:35:26 - перейти к сообщению
.htaccess
Спойлер (Отобразить)

armancho7777777 пишет:
в том числе через ajax

Если там скрипты которые инклюдяца, то .htaccess + проверять в самих скриптах наличие контрольной константы.
Если туда ломица ajax, то никаких .htaccess, и проверять на:
PHP:
скопировать код в буфер обмена
  1. if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) die();
3. EuGen - 17 Ноября, 2011 - 08:17:28 - перейти к сообщению
DeepVarvar пишет:
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']))

Не то. можно подделать. В случае AJAX мы ни как не отличим обычный запрос от AJAX.
armancho7777777
Через .htaccess можете сделать, например, так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <Directory /path/to/directory>
  2. order allow,deny
  3. deny from all
  4. </Directory>
4. armancho7777777 - 17 Ноября, 2011 - 08:19:35 - перейти к сообщению
Дело в том, что в этом каталоге есть папка js, в которой js файлы, которые так же надо скрыть от прямого вызова через адресную строку.
5. Мелкий - 17 Ноября, 2011 - 08:21:19 - перейти к сообщению
armancho7777777, надеюсь, вы понимаете, что в этом случае и на страницу эти JS подключаться они не будут?
6. snikers987 - 17 Ноября, 2011 - 08:24:09 - перейти к сообщению
armancho7777777 пишет:
Дело в том, что в этом каталоге есть папка js, в которой js файлы, которые так же надо скрыть от прямого вызова через адресную строку.


Так не получится, js грузятся по http если их закроеш то они перестанут грузиться и где надо и где не надо.
7. armancho7777777 - 17 Ноября, 2011 - 08:35:30 - перейти к сообщению
EuGen пишет:
Через .htaccess можете сделать, например, так:

Но в таком случае перестают работать ajax-запросы к файлам этой закрытой директории.
8. EuGen - 17 Ноября, 2011 - 08:37:36 - перейти к сообщению
armancho7777777 пишет:
Но в таком случае перестают работать ajax-запросы к файлам этой закрытой директории.

Разумеется. Я же писал выше, что
EuGen пишет:
В случае AJAX мы ни как не отличим обычный запрос от AJAX.

Поэтому в общем случае невозможно запретить одно и оставить второе.
9. armancho7777777 - 17 Ноября, 2011 - 08:40:38 - перейти к сообщению
snikers987 пишет:
Так не получится, js грузятся по http если их закроеш то они перестанут грузиться и где надо и где не надо.

А как быть?
Если только переписать JS код в файлы с расширением PHP, и проверять на контрольную константу. Но "грязно" ведь так будет, блин.
10. EuGen - 17 Ноября, 2011 - 08:44:01 - перейти к сообщению
armancho7777777
Да никак не быть. Вы пытаетесь защитить - что? Текст JS-скриптов? Так они, будучи загруженными в браузер, могут быть просмотрены в любом случае (если хотите - есть множество дополнений, которые при запросе покажут все, что было подключено на странице - css, js и т.п.).
То есть, если Вы отдаете их по льзователю, то он в любом случае получает их код.

Другое дело, если Вы не хотите, чтобы скрипты (имею ввиду серверные, то есть php), которые не предназначены для прямого вызова, вызывались не через AJAX. Но здесь нужно прежде всего устанавливать защиту сообразно бизнес-логике приложения.
11. armancho7777777 - 17 Ноября, 2011 - 08:45:11 - перейти к сообщению
EuGen пишет:
Поэтому в общем случае невозможно запретить одно и оставить второе.
Я хочу использовать ajax в админках CMS. И вот думаю над реализацией не только эстетики и простоты для конечного пользователя, но и безопасности.
12. EuGen - 17 Ноября, 2011 - 08:46:57 - перейти к сообщению
Про безопасность я уже сказал - самый лучший способ - когда Вы знаете, какой запрос правильный, а какой - нет. (и знаете, какой запрос может прийти через AJAX, а какой-нет). И безопасность с защитой строить исходя из этого, ведь технических возможностей решения в данном случае нет.
13. armancho7777777 - 17 Ноября, 2011 - 08:51:13 - перейти к сообщению
EuGen пишет:
armancho7777777
Да никак не быть. Вы пытаетесь защитить - что? Текст JS-скриптов? Так они, будучи загруженными в браузер, могут быть просмотрены в любом случае (если хотите - есть множество дополнений, которые при запросе покажут все, что было подключено на странице - css, js и т.п.).
То есть, если Вы отдаете их по льзователю, то он в любом случае получает их код.

Другое дело, если Вы не хотите, чтобы скрипты (имею ввиду серверные, то есть php), которые не предназначены для прямого вызова, вызывались не через AJAX. Но здесь нужно прежде всего устанавливать защиту сообразно бизнес-логике приложения.

В коде js скриптов можно просмотреть пути к файлам-обработчикам.
Каталог, который я хочу скрыть, относится к админке. И в ней так же куча js файлов.
Мне надо, что бы какой - нибудь потенциальный вредитель не набрал в адресной строке путь к этому каталогу, как-то умудрившись получить его, и не просмотрел все содержимое.
(Добавление)
EuGen пишет:
самый лучший способ - когда Вы знаете, какой запрос правильный, а какой - нет. (и знаете, какой запрос может прийти через AJAX, а какой-нет

Ну я так и делаю в общем-то) Всё фильтрую, можно даже сказать, параноидально фильтрую)
14. Самогонщик - 17 Ноября, 2011 - 08:54:33 - перейти к сообщению
По моему так
Кажись погорячился пишет:
Options -Indexes


А имена скриптов делай случайными, чтоб враги не догадались.
15. EuGen - 17 Ноября, 2011 - 08:57:10 - перейти к сообщению
armancho7777777 пишет:
Каталог, который я хочу скрыть, относится к админке.

Существенное дополнение. Как уже Вам подсказывают, Options -Indexes
Самогонщик пишет:
А имена скриптов делай случайными, чтоб враги не догадались.

Не очень понял, как это может помочь. Ведь можно в исходном коде посмотреть, что там загружается.

 

Powered by ExBB FM 1.0 RC1