next up previous contents
Next: Limpiando datos sucios Up: Activando el reporte de Previous: Activando el reporte de   Contents

Detectando datos sucios

Para detectar datos sucios, podemos utilizar esta función (sugerida en [6]):

sub is_tainted {

    return ! eval { join ('', @_), kill 0;

1;

}}
Podemos también utilizar el módulo taint, disponible en el CPAN [1] de la siguiente manera:

use Taint;

warn ``Datos sucios'' if tainted ($var1,@var2, $3var3, %var4);

Evitando así posibles caídas del programa.

Hay ciertos valores que siempre estarán sucios, pues provienen del mundo externo. Por ejemplo, el path de ejecución ($ENV{PATH} es heredado, y Perl no tiene manera de saber si éste es seguro. Cualquier programa externo que ejecutemos desde Perl (con system(), exec, qx, comillas inversas, etc.) requiere que $ENV{PATH} esté limpio para permitir su ejecución.



Gunnar Wolf 2002-05-20