普拉克&污点模式

时间:2011-05-29 08:37:47

标签: perl plack psgi

是否建议使用perl的污点模式开发Plack应用程序(中间件)?

如果是,如何在受污染模式下启动plackup和/或Starman?在简单的CGI脚本中,很容易用shebang线完成。

perl -T /path/to/{plackup|starman}完成这项工作吗?或者这是推荐的方式吗?或者不推荐?

关于组合Plack + Taint模式的任何想法,指针,文章?

2 个答案:

答案 0 :(得分:7)

我们通常不建议人们在污点模式下开发Plack应用程序,仅仅因为我个人不相信污点模式的用处。

Plack的核心实用程序(如plackup和Plack :: Utli)特别适用于污点模式,因为它需要将给定的.psgi文件编译为源代码。如果你真的想在污点模式下开发你的应用程序,你必须绕过plackup并使用Plack :: Handler或Plack :: Loader。

答案 1 :(得分:1)

解决plackup util很简单, 我可以给你一个fastcgi的例子,但它应该可以与starman做同样的事情 忘记.psgi文件并使用普通的启动脚本:

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

);    #or使用Plack :: Loader加载服务器

#run你的申请    $服务器 - >运行($应用);

然后用taintmode perl -T

启动你的startup.pl脚本