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 » » Работа с файловой системой и файлами » Как запретить просмотр файлов в директории выше заданной

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

1. 3d_killer - 30 Сентября, 2014 - 19:46:30 - перейти к сообщению
Добрый вечер всем, у меня есть самописный файловый менеджер скрипт лежит по пути
CODE (htmlphp):
скопировать код в буфер обмена
  1. сайт\admin\modules\filemanager\action

если скрипту передать такой путь : '../../../..' то он отобразит файлы и папки в директории сайта там где index, а если такой '../../../../..' то полезет выше и выведет все сайты на хосте.
В интерфейсе это ограничено, но если сделать подмену то попасть выше в директорию возможно, как можно это дело ограничить?
2. dcc0 - 30 Сентября, 2014 - 19:54:41 - перейти к сообщению
open_basedir в php.ni не спасет?
3. OrmaJever - 30 Сентября, 2014 - 19:59:02 - перейти к сообщению
3d_killer пишет:
как можно это дело ограничить?

правами unix пользователя. php или апач запущен от какого нибудь www-data, вот и дать ему права только на одну свою папку и никуда выше он не полезет
4. 3d_killer - 30 Сентября, 2014 - 19:59:57 - перейти к сообщению
на том хосте править его нет возможности
(Добавление)
так апач то запущен один для всех сайтов
(Добавление)
если проставить с помощью директивы ini_set то администратор может то отредактировать это
5. MiksIr - 30 Сентября, 2014 - 20:06:58 - перейти к сообщению
Ну раз самописный, то добавить туда проверку

PHP:
скопировать код в буфер обмена
  1. $requested_dir = realpath($requested_dir);
  2.  
  3. if (!$requested_url || strpos($requested_dir, __DIR__) !== 0) {
  4.    throw new AccessDeniedException();
  5. }
6. 3d_killer - 30 Сентября, 2014 - 20:20:41 - перейти к сообщению
MiksIr дело в том что администратор имеет права для редактирования этих скриптов, ему не составит труда удалить эту проверку
7. MiksIr - 30 Сентября, 2014 - 20:33:21 - перейти к сообщению
Вы хотите защитить просмотр директорий выше текущей для администратора, который может редактировать php скрипты?
Тогда советы выше: chmod или open_basedir
В 5.3+ можно ужесточать open_basedir
8. 3d_killer - 30 Сентября, 2014 - 20:43:26 - перейти к сообщению
не пойму что прописывать в php.ini пробую на денвере
на сервере три сайта
1
2
3
как сделать так чтобы находясь на 3 я не мог просматривать файлы выше 3, ну и на других тоже соответственно?
9. dcc0 - 30 Сентября, 2014 - 21:47:04 - перейти к сообщению
Пример
open_basedir=/var/www
Скрипт сможет погрузиться в глубины директории, а вот глотнуть свежего воздуха из /var уже нет
10. 3d_killer - 30 Сентября, 2014 - 22:02:30 - перейти к сообщению
это да а если с первого сайта я кину переменную ../../../../2/
то тогда он попадет на второй сайт?
11. dcc0 - 30 Сентября, 2014 - 22:27:03 - перейти к сообщению
Мда, веб-сервер-то от одного пользователя работает, а если сайтов несколько, то...
придется придумывать какое-то правило ... чтобы работало для каждого виртуального хоста
12. 3d_killer - 30 Сентября, 2014 - 22:29:26 - перейти к сообщению
да печалька
13. dcc0 - 30 Сентября, 2014 - 23:14:32 - перейти к сообщению
В качестве предположения:
попытаться в тот же open_basedir после корня указать какую-то гипотетическую переменную, хранящую виртуальный хост.
Что-то вроде /var/ww/$VARIABLE
(если это возможно)
14. MiksIr - 01 Октября, 2014 - 13:57:27 - перейти к сообщению
У вас к чему доступ то есть? К конфигу апача? К php.ini?

 

Powered by ExBB FM 1.0 RC1