Режим сканирования и печати
Рекомендуется ли разрабатывать приложения Plack (middlewares) с perl taint mode?
Если да, то как начать plackup и/или Starman в tainted режиме? В простой CGI script, который был легко выполнен с помощью строки shebang.
Будет ли perl -T /path/to/{plackup|starman}
выполнять работу? Или здесь какой-нибудь рекомендуемый способ? Или это не рекомендуется?
Любые идеи, указатели, статьи о комбинации режима Plack + Taint?
Ответы
Ответ 1
Обычно мы не рекомендуем людям разрабатывать приложения Plack в режиме taint, просто потому, что лично я не верю в полезность режима taint.
Утилиты Plack Core, такие как plackup и Plack:: Utli, особенно не хорошо работают с taint-режимом, потому что он должен скомпилировать данный .psgi файл в качестве исходного кода. Если вы действительно хотите разработать приложение в режиме taint, вам нужно обойти plackup и использовать Plack:: Handler или Plack:: Loader.
Ответ 2
Простой способ использования утилиты plackup,
я могу дать вам пример для fastcgi, но должно быть возможно сделать то же самое со Starman
забыть о файле .psgi и использовать простой запуск script:
my $app = sub {
my $env = shift;
#...
}
#read the pid file, check for an old process, kill the old process...
#...
#choose a psgi Server impl.
#i prefere fcgi
my $manager = new FCGI::ProcManager::MaxRequests({
'max_requests'=>100,
'pid_fname'=>$pid_file,
'n_processes'=> 3,
'pm_title'=> $name
});
my $server = Plack::Handler::FCGI->new(
'listen'=>[$socket],
'detach' => 1,
'manager' => $manager
); # или использовать Plack:: Loader для загрузки сервера
#run ваше приложение $ Server- > запустить ($ приложение);
затем запустите свой startup.pl script с taintmode perl -T