Режим сканирования и печати

Рекомендуется ли разрабатывать приложения 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