Autor Tema: Mini tutorial de Perl Moderno  (Leído 6770 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado perlhispano

  • Recién llegado
  • *
  • Mensajes: 12
  • Karma: +1/-1
  • Perl Programming
    • MSN Messenger - danimera@hotmail.com
    • Ver Perfil
    • Perl Hispano
Mini tutorial de Perl Moderno
« : febrero 10, 2010, 05:17:36 pm »
Hola, escribo este post para orientar a la gente un poco sobre Perl.

Esto es sencillamente un texto donde hablaremos de Perl.
Primero aunque Perl tiene mas de 20 años de existencia en la internet, ya existe programacion moderna en Perl, hablo del año 2009 a este año 2010.

Perl tiene modulos que hacen tareas rapidamente, sistema de plantillas, y muchas formas de hacer las cosas, un ejemplo podria ser recojer los datos de un simple formulario en Perl

Código: perl [Seleccionar]

#!/usr/local/bin/perl

use CGI qw(:all);

print header;
$datos= new CGI; #creamos un objeto CGI
print $datos->param('nombre'); # imprimimos el dato
#o sencillamente obviamos las dos lineas anteriores y usamos esta
print param('edad'), param('nombre');
#podemos imprimir variables separadas por comas ,


Antiguamente se recogian datos de otra forma, ahora este es el camino standar, Perl tiene muchas formas de hacer las cosas,, Seria interesante mostrar en el sitio por ejemplo como hacer un pequeño CMS en pocas lineas de codigo, esto mostraria que Perl es mas potente que PHP y mucho mas que ASP.

para activar Perl Moderno en nuestro script basta con:

Código: perl [Seleccionar]

#!/usr/local/bin/perl
use Modern::Perl; # usamos perl Moderno
use CGI qw(:all);

print header;
$datos= new CGI; #creamos un objeto CGI
print $datos->param('nombre'); # imprimimos el dato



Ahi ya activamos muchas cosas que fascilitan la programacion y depuracion de nuestro scritp.

Luego veremos algun articulo de CGI::Applicacion el framework mas flexible que tiene Perl, con todo lo necesario para la programacion web.
Programacion web Moderna en Perl
No pierdas tiempo usa Perl.
http://www.perlhispano.com
Si has encontrado útil este articulo recuerda que puedes ayudarnos con tu donación voluntaria la cual ayudará al staff y a la mantención del foro.

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Mini tutorial de Perl Moderno
« Respuesta #1 : febrero 10, 2010, 11:39:55 pm »
ah super,
Código: perl [Seleccionar]
print $datos->param('nombre'); # imprimimos el dato


De que forma puedo saber si es una petición GET o POST?
Otra cosa... como puedes filtrar el texo como lo hace php para evitar un xss? en php se utiliza htmlspecialchars($var, ENT_QUOTES);
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado perlhispano

  • Recién llegado
  • *
  • Mensajes: 12
  • Karma: +1/-1
  • Perl Programming
    • MSN Messenger - danimera@hotmail.com
    • Ver Perfil
    • Perl Hispano
Re: Mini tutorial de Perl Moderno
« Respuesta #2 : febrero 11, 2010, 01:56:28 am »
ah super,
Código: perl [Seleccionar]
print $datos->param('nombre'); # imprimimos el dato


De que forma puedo saber si es una petición GET o POST?
Otra cosa... como puedes filtrar el texo como lo hace php para evitar un xss? en php se utiliza htmlspecialchars($var, ENT_QUOTES);


GET O POST --> Eso no importa a la hora de recoger los datos,, php por ejemplo es $_GET['var'] o $_POST['VAR'] asi que estas obligado a saber por que metodos se envian los datos;  en perl basta con param('nombreparmetro');

en Perl como las variables de ambiente se puede saber @ENV variable reservada.

los datos de GET  $ENV{'QUERY_STRING'}.
POST              $ENV{'CONTENT_LENGTH'}

sobre los XSS
Bueno no se mucho de eso, pero si imprimes un dato enviado directamente por un formulario  ejemplo:

Código: html4strict [Seleccionar]
<iframe src="http://www.example.com/search.pl?text=<script>alert(document.cookie)</script>">


Ahi hay un ataque xss y lograria pasar,,
un ejemplo para evitarlo por que hay muchas formas creo seria


Código: perl [Seleccionar]
 
   #!/usr/bin/perl
        use CGI;
        use HTML::Entities;

        my $cgi = CGI->new();
        my $text = $cgi->param('text');

        print $cgi->header();
        print "You entered ", HTML::Entities::encode($text);


pero creo que igual es un arma de doble filo, realmente yo protejo los datos a la hora de salida y no de entrada, ademas se debe tener el cuenta que validar, por ejemplo si quiero tomar solo texto usaria una expresion regular asi ($text =~ s/[^A-Za-z0-9 ]*/ /g; #no probado)

En algo mas avanzado de Perl uno ya le dice al script que haga escapes de HTMl cuando se necesite imprimir un dato.

Espero sirva de algo
Programacion web Moderna en Perl
No pierdas tiempo usa Perl.
http://www.perlhispano.com

Desconectado yoyahack

  • Recién llegado
  • *
  • Mensajes: 25
  • Karma: +0/-0
    • Ver Perfil
    • Email
Re: Mini tutorial de Perl Moderno
« Respuesta #3 : febrero 11, 2010, 11:12:06 am »
En perl se pueda que declarar el metodo http para hacer peticiones GET/POST, en caso que uses CGI::Form...

Seria bueno desarrollar algun CMS en perl por separado y testearlo.

Desconectado perlhispano

  • Recién llegado
  • *
  • Mensajes: 12
  • Karma: +1/-1
  • Perl Programming
    • MSN Messenger - danimera@hotmail.com
    • Ver Perfil
    • Perl Hispano
Re: Mini tutorial de Perl Moderno
« Respuesta #4 : febrero 11, 2010, 04:40:39 pm »
En perl se pueda que declarar el metodo http para hacer peticiones GET/POST, en caso que uses CGI::Form...

Seria bueno desarrollar algun CMS en perl por separado y testearlo.


Alternativa al CGI::Form uso el Formbuilder http://www.formbuilder.org/

Estoy desarrollando un CMS en Perl con el frameworks CGI::Application, ESPERO AYUDA DE ALGUIEN ES FACIL TRABAJARLE pero llevo 614 lineas de codigo,, y maneja hasta plantillas, pero lo manejo en ficheros CSV Por ahora solo tiene:

1- modulos de paginas.
2- modulo de noticias.
3- Galerias Fotograficas
4- Capacidad para manejar plugins
5- Plugin de encuesta
6. usuario autenticacion
7. Base de datos en formato CSV
Programacion web Moderna en Perl
No pierdas tiempo usa Perl.
http://www.perlhispano.com

Desconectado 3l3cTr0n1k_0

  • Recién llegado
  • *
  • Mensajes: 47
  • Karma: +5/-1
    • Ver Perfil
    • El arte de programar
    • Email
Re: Mini tutorial de Perl Moderno
« Respuesta #5 : abril 27, 2010, 05:24:30 pm »
ah super,
Código: perl [Seleccionar]
print $datos->param('nombre'); # imprimimos el dato


De que forma puedo saber si es una petición GET o POST?
Otra cosa... como puedes filtrar el texo como lo hace php para evitar un xss? en php se utiliza htmlspecialchars($var, ENT_QUOTES);


GET O POST --> Eso no importa a la hora de recoger los datos,, php por ejemplo es $_GET['var'] o $_POST['VAR'] asi que estas obligado a saber por que metodos se envian los datos;  en perl basta con param('nombreparmetro');


en Perl como las variables de ambiente se puede saber @ENV variable reservada.

los datos de GET  $ENV{'QUERY_STRING'}.
POST              $ENV{'CONTENT_LENGTH'}

sobre los XSS
Bueno no se mucho de eso, pero si imprimes un dato enviado directamente por un formulario  ejemplo:

Código: html4strict [Seleccionar]
<iframe src="http://www.example.com/search.pl?text=<script>alert(document.cookie)</script>">


Ahi hay un ataque xss y lograria pasar,,
un ejemplo para evitarlo por que hay muchas formas creo seria


Código: perl [Seleccionar]
 
   #!/usr/bin/perl
        use CGI;
        use HTML::Entities;

        my $cgi = CGI->new();
        my $text = $cgi->param('text');

        print $cgi->header();
        print "You entered ", HTML::Entities::encode($text);


pero creo que igual es un arma de doble filo, realmente yo protejo los datos a la hora de salida y no de entrada, ademas se debe tener el cuenta que validar, por ejemplo si quiero tomar solo texto usaria una expresion regular asi ($text =~ s/[^A-Za-z0-9 ]*/ /g; #no probado)

En algo mas avanzado de Perl uno ya le dice al script que haga escapes de HTMl cuando se necesite imprimir un dato.

Espero sirva de algo




Si usas request en php no necesita saber si es post, get o cookie ...


Desconectado nakp

  • Staff
  • Usuario regular
  • ******
  • Mensajes: 79
  • Karma: +5/-1
    • Ver Perfil
Re: Mini tutorial de Perl Moderno
« Respuesta #6 : abril 29, 2010, 02:31:57 pm »
precisamente... necesitas saber por donde recoges esos datos, es una mala practica recibir datos indiscriminadamente xD

Desconectado WHK

  • 吴阿卡
  • Administrador
  • Aportador
  • *****
  • Mensajes: 555
  • Karma: +15/-3
  • Coder
    • Yahoo Instant Messenger - yan_uniko_102
    • Ver Perfil
    • WHK
    • Email
Re: Mini tutorial de Perl Moderno
« Respuesta #7 : abril 30, 2010, 10:29:25 pm »
precisamente... necesitas saber por donde recoges esos datos, es una mala practica recibir datos indiscriminadamente xD

asi es, el problema es que cuando puedes pasar get por post es muchisimo mas suceptible a CSRF como pasa en cpanel, está llena de bugs por globalizar las request y no usar token de sesión como lo hace phpmyadmin.
Mi WEB - The Hacktivism is not a crime - Si no lo hago yo, que lo hagan otros -

Desconectado 3l3cTr0n1k_0

  • Recién llegado
  • *
  • Mensajes: 47
  • Karma: +5/-1
    • Ver Perfil
    • El arte de programar
    • Email
Re: Mini tutorial de Perl Moderno
« Respuesta #8 : mayo 01, 2010, 02:44:11 pm »
precisamente... necesitas saber por donde recoges esos datos, es una mala practica recibir datos indiscriminadamente xD

asi es, el problema es que cuando puedes pasar get por post es muchisimo mas suceptible a CSRF como pasa en cpanel, está llena de bugs por globalizar las request y no usar token de sesión como lo hace phpmyadmin.

no tiene que ver con inseguridad que use request o no :x3: esta mal programado y ya  :yum:


. . . . . . . .