parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Подскажите, как ограничить parser3.cgi в возможности доступа к файлам выше корня веб-пространства?

Vladimir Serebryanov 17.06.2017 13:34

Здравствуйте,
возможно вопрос не по адресу, но всё же,
занят настройкой Парсера на Apache2,
и может есть ценные советы, ну или укажите на ошибки...
Спасибо!
Конфигурация веб-сервера (Apache 2.4.18):

Файловая структура:
---------------------------------------------
/var/www/site-001/      <- корень веб-пространства для данного virtual server
                  html/  <- корень документов
                     index.html

                  cgi/  <- cgi-alias    \
                      charsets/         |
                      libs/             |
                      parser3.cgi      <- owner www-data:www-data
                      auto.p            /
---------------------------------------------



Ключевая часть конфига Апача для site-001
---------------------------------------------
DocumentRoot /var/www/site-001/html

<Directory />
	AllowOverride None
</Directory>

<Directory /var/www/000-default/web>
 	Options FollowSymLinks
 	AllowOverride None
 	Order allow,deny
	Allow from all
</Directory>

ScriptAlias "/cgi-bin/" "/var/www/site-001/cgi/"

<Directory "/var/www/site-001/cgi">
	AllowOverride None
	Options +ExecCGI
	Order allow,deny
	Allow from all
</Directory>

AddHandler parser3-handler html
Action parser3-handler /cgi-bin/parser3.cgi
---------------------------------------------
Все работает и release-версия, и ночной билд для тестовой странички.

Но если Парсерный код захочет сделать так:
$list[^file:list[/../../../../../]]
^list.menu{
    $list.name <br />
}
То, неизбежно сможет получить что-то вида:

lib64
run
root
boot
lost+found
proc
opt
srv
mnt
etc
sbin
vmlinuz
initrd.img
snap
tmp
home
dev
sys
lib
var
usr
bin

----

Можно ли разрулить scope директорий не выше корня веб-пространства на уровне конфига Парсера или Апача?

Или только средствами прав пользователя/группы www-data (под которым работает Apache2 - и как бы не сломать политику самого апача при этом).