Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Problemas con Taint mode en CGI usando Perl 5.14 en Windows  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 13 mensajes ] 
 
Nota 2011-11-20 10:07 @463

Perlero Frecuente
Registrado: 2009-12-10 11:20 @514
Mensajes: 124
Problemas con Taint mode en CGI usando Perl 5.14 en Windows
¿Por qué no puedo usar este encabezado
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!c:/perl/bin/perl -T
en Perl 5.14 corriendo en Windows, para implementar el "#!c:/perl/bin/perl"?

Cuando lo escribo me sale el siguiente mensaje de error:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
"-T" is on the #! line, must also be used on the comand line.


¿A qué linea de comandos se refiere, a la de llamada del CGI?

Gracias por adelantado.


Nota 2011-11-20 13:03 @586
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
El mensaje de error se refiere a cuando ejecutas el programa desde la línea de comandos.

Dice que, si está marcada la opción '-T' en la línea shebang, también debe indicarse en la línea de comandos (en la terminal), cuando lo ejecutas de forma directa.

Así que, en lugar de escribir (en la línea de comandos)

perl programa.pl

o

./programa.pl

o

programa.pl

debes escribirlo así:

perl -T programa.pl

o

./programa.pl -T

o

programa.pl -T

No se refiere a cuando se ejecuta en modo CGI, sino solo cuando es ejecutado de forma directa.

_________________
JF^D Perl programming


Nota 2011-11-20 14:14 @635

Perlero Frecuente
Registrado: 2009-12-10 11:20 @514
Mensajes: 124
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Pues entonces no sé por qué deja de funcionar el CGI cuando hago el cambio y le pongo el -T en la línea de encabezado...

¿No hay una línea tipo "use warnings;" para poder poner la opción de Taint sin que dé error al ejecutar el programa?
Siento mucho venir siempre preguntando por cosas tan raras.
:wink:

Un saludo y gracias


Nota 2011-11-20 18:17 @803
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
¿Qué mensaje de error sale en los ficheros log del del servidor web?

_________________
JF^D Perl programming


Nota 2011-11-20 18:45 @822

Perlero Frecuente
Registrado: 2009-12-10 11:20 @514
Mensajes: 124
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Me sale esto:

Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
Insecure dependency in open while running with -T switch at C:/xampp/htdocs/...


Nota 2011-11-20 19:23 @849
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Taint está haciendo su trabajo :)

Te está diciendo que estás intentando abrir un fichero usando una variable que está contaminada ("entintada", tained) con información -insegura- del exterior del programa (posiblemente enviada por un usuario, pero podría ser un hacker malicioso).

Debes descontaminar esa variable, antes de poder utilizarla.

Es lo que tiene usar el modo Taint, que nos obliga a estas normas de seguridad, para que no haya agujeros de seguridad.

Más información en perldoc perlsec. Busca por "Insecure dependency".

_________________
JF^D Perl programming


Nota 2011-11-21 04:57 @248

Perlero Frecuente
Registrado: 2009-12-10 11:20 @514
Mensajes: 124
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Voy a mirar la documentación que me señalaste, pero antes te dejo las líneas completas del error y la línea del CGI donde se localiza el problema. No alcanzo a comprender que es lo dañino...

[Sun Nov 20 20:06:18 2011] [error] [client 127.0.0.1] Insecure dependency in open while running with -T switch at C:/xampp/htdocs/DB/C_SQL3.cgi line 97., referer: http://localhost/DB/CI.html

La línea implicada en el error de "Taint" y la relacionada con ella son las siguientes:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. 94. my $filename= "$col"."\-"."Sequences"."$$"."$^T"."\.txt";

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. 97. open  SALIDA,'>>'."C:/xampp/htdocs/DB/Results/$filename" or die "ERROR: $!\n";


Nota 2011-11-21 10:45 @490
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
El error se refiere a que la variable $filename está contaminada, porque, a su vez, alguna de las variables $col y $sequences también lo están.

_________________
JF^D Perl programming


Nota 2011-11-23 04:48 @242

Perlero Frecuente
Registrado: 2009-12-10 11:20 @514
Mensajes: 124
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Hola explorer,

Leí el documento de perlsec y siguiendo sus instrucciones hice lo siguiente:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. my $col= param('subunit');
  2.  
  3. ############UNTAINTING $col####################  
  4.     if ($col =~ /^([-\@\w.]+)$/) {
  5.     $col = $1; # $data now untainted
  6.     } else {
  7.     die "Bad data in '$col'"; # log this somewhere
  8. ################################################
  9.     }


Ahora me funciona el CGI sin problemas, aunque retarda un segundo la carga de la estructura del HTML/CSS de la web.

Deduzco que he de hacer lo mismo con todas las variables aunque entren a través de un formulario al CGI, ¿correcto?


Nota 2011-11-23 06:32 @314
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Precisamente, por ser datos que recibimos a través de un formulario, es cuando más atención debemos prestar.

Todas ellas, contaminadas ;)

Lo que me extraña es lo que dices que tarde un segundo en cargar el HTML/CSS.

_________________
JF^D Perl programming


Nota 2011-11-23 07:06 @337

Perlero Frecuente
Registrado: 2009-12-10 11:20 @514
Mensajes: 124
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Debía ser que el ordenador estaba haciendo algo en segundo plano y por eso tardaba.

No veas la de variables contaminadas que tenía en los CGI...casi me da un síncope, ¡ja,ja,ja!

Con este procedimiento de "taint",
¿qué seguridad funcional le aporto a mi Base de datos?
¿Evito que me puedan mandar un script que me borre la BD?
De no ser así, ¿eso como lo podría hacer?


Nota 2011-11-23 08:19 @388
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10271
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows
Alfumao escribió:
No veas la de variables contaminadas que tenía en los CGI...casi me da un síncope, ¡ja,ja,ja!
Una forma de abreviarlo es así:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. for ($var1, $var2, $var3, $var4) {
  2.     s/\W//g;
  3. }
Con esto, hacemos un bucle por una serie de variables. Para cada una, le pasamos una sustitución, en que cada letra que no sea perteneciente a una palabra, la quitamos. Las variables son actualizadas automáticamente gracias a que son enlazadas por el bucle for().

Alfumao escribió:
Con este procedimiento de "taint",
¿qué seguridad funcional le aporto a mi Base de datos?
¿Evito que me puedan mandar un script que me borre la BD?
De no ser así, ¿eso como lo podría hacer?
"Taint" te sirve para saber qué variables pueden tener contenido contaminado, y te obligará a que hagas ese procedimiento de extracción o filtrado, para que solo tu seas el responsable de recoger esos contenidos. Eso quiere decir que no hay una seguridad plena desde el punto de vista lógico (del programa). Ejemplo: esperas de un usuario que introduzca un nombre, y pones una expresión regular para admitir caracteres alfanuméricos y el espacio en blanco (para permitir nombres compuestos y separar nombre del apellido), y va el listo de turno y mete como nombre una docena de espacios en blanco. "Taint" no se dará cuenta de eso. Debe ser tu lógica de programa la que trate esos casos. Lo que "Taint" te obliga es a hacer la extracción, nada más.

La regla fundamental para tratar con información externa es: quedarnos con los caracteres que nos sirven. ¡Ojo!, esto no es lo mismo que decir que quitamos los caracteres que nos sobran. Siempre puede darse el caso de que se nos haya olvidado mandar quitar algún carácter peligroso. Así, es mejor decir qué caracteres queremos.

En la exp. reg. anterior lo has puesto bien: has indicado qué caracteres buscabas (alfanuméricos, el '.', el '-' y la '@').

Si alguien quiere enviarte código (SQL o en mismo Perl), te llegará con caracteres de avance de línea, el carácter ';' y cosas así. Bueno, pues con exp. reg. como la anterior lo tendrás solventado.

_________________
JF^D Perl programming


Nota 2011-11-23 08:33 @397

Perlero Frecuente
Registrado: 2009-12-10 11:20 @514
Mensajes: 124
Re: Problemas con Taint mode en CGI usando Perl 5.14 en Windows  RESUELTO
Muchas gracias, explorer, ha sido una explicación muy informativa y concisa.
:D


Responder al tema  [ 13 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO