2011-05-29 12 views
11

¿Se recomienda desarrollar aplicaciones Plack (middlewares) con el modo Perla?Modo Plack & Taint

En caso afirmativo, ¿cómo iniciar plackup y/o Starman en modo contaminado? En el simple script CGI que se hizo fácilmente con la línea shebang.

¿Va a hacer el trabajo perl -T /path/to/{plackup|starman}? ¿O aquí está alguna forma recomendada? O no es recomendado?

¿Alguna idea, consejos, artículos sobre la combinación del modo Plack + Taint?

Respuesta

7

Por lo general, no recomendamos que las personas desarrollen aplicaciones de Plack en el modo de contaminación, simplemente porque personalmente no creo en la utilidad del modo de contaminación.

Las utilidades centrales de Plack, como Plackup y Plack :: Utli, en particular, no funcionan bien con el modo de contaminación porque necesita compilar el archivo .psgi dado como código fuente. Si realmente desea desarrollar su aplicación en el modo de contaminación, debe omitir el plackup y usar Plack :: Handler o Plack :: Loader.

+5

está de acuerdo con no correr Starman (como un servidor de producción) bajo modo corrompido, pero en mi humilde opinión en el desarrollo es una buena práctica de la escritura de aplicaciones de lo que son seguros mancha - entonces, cada entrada de usuario posible se compara con una expresión regular. Estoy usando el modo de contaminación como advertencia: cuidado aquí es una variable insegura. De todos modos, gracias por la respuesta. ;) – kobame

1

es fácil de solucionar el util plackup, te puedo dar un ejemplo para fastcgi pero debe ser Posible para hacer lo mismo con el hombre de las estrellas forgett sobre el archivo de la .psgi y utilizar un script de inicio normal:

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 

); #o use Plack :: Loader para cargar un servidor

# ejecute su aplicación $ server-> run ($ app);

a continuación, inicie la secuencia de comandos startup.pl con el Perl taintmode -T