11

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

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

perl -T /path/to/{plackup|starman}做这份工作吗?或者这里有什么推荐的方法?还是不推荐?

关于 Plack+Taint 模式组合的任何想法、提示和文章?

4

2 回答 2

7

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

Plack 的核心实用程序,例如 plackup 和 Plack::Utli 尤其不能很好地与 taint 模式配合使用,因为它需要将给定的 .psgi 文件编译为源代码。如果你真的想在 taint 模式下开发你的应用程序,你必须绕过 plackup 并使用 Plack::Handler 或 Plack::Loader。

于 2011-05-29T19:15:14.423 回答
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

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

#运行你的应用程序 $server->run($app);

然后用 taintmode perl -T 启动你的 startup.pl 脚本

于 2012-07-01T17:12:36.270 回答