Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Otra ayuda para otras preguntas que me hacen

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto
Mensaje Dom Nov 11, 2007 7:37 am
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 212
Ubicación: Colombia
Otra ayuda para otras preguntas que me hacen Responder citando

---------

Ultima edición por danimera el Mie Ene 30, 2008 7:59 am, editado 1 vez
Mensaje Dom Nov 11, 2007 4:43 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
Responder citando

He encontrado un libro sobre Design Paterns, en el propio CPAN:
http://search.cpan.org/perldoc?Object::PerlDesignPatterns
Mensaje Sab Nov 17, 2007 10:28 am
Jenda
Perlero Nuevo
Perlero Nuevo
Registrado: 29 Oct 2007
Mensajes: 99
Ubicación: Praga, Republica Checa
Re: Otra ayuda para otras preguntas que me hacen Responder citando

danimera escribió:
4. What general practices do you follow to insure site security and what specifically for Perl/MYSQL/PostgreSQL? How do you handle client state?


¡Escape! ¡Use placeholders! ¡Use -T (tainting)! ¡Siempre comprueba que los datos contienen solo lo que es seguro, nunca trates de buscar algo que inseguro!

Es muy habitual que programadores incluyen variables en HTML, SQL, URLs y otras lugares similares sin escapar los símbolos que son especiales en ese contexto. O peor, sólo escapan uno o dos de esos símbolos.

Creo que todos ustedes han visto cosas así:

Perl:
print "<p>Blah blah blah $nombre blah blah.</p>";
 # que pasa si $nombre contiene < por ejemplo?
print qq{<input type="text" name="blah" value="$blah">\n};
 # que pasa si $blah contiene " ?
print qq{<img src="script.cgi?algo=$algo&otro=$otro">};
 # que pasa si $algo o $otro contiene & por ejemplo?
my $sql = "SELECT * FROM Table WHERE Nombre = '$nombre'";
 # Que por demonios pasa si
 #  $nombre = "hola'; delete from Table; select 'adios"; ???


Siempre tienes que escapar o comprobar que no necesitas escapar (por ejemplo si sabes con seguridad que $var es un número, no tienes por qué escaparlo).

Y cuando conectas a la base de datos siempre use los placeholders:

Perl:
my $sth = $dbh->prepare("SELECT * FROM Table WHERE Nombre = ?");
...
$sth->execute( $nombre);


es más seguro y más rápido, especialmente si buscas más nombres.


El parámetro -T en Perl te ayuda a saber qué datos son fijos en el script (y son seguros) y quienes vienen del cliente y son inseguros. Y ayuda a forzarte a comprobar los datos. Seguro si haces algo así, podría ser seguro:

Perl:
$inseguro =~ /^(.*)$/;
my $seguro = $1;


Sí, es verdad que ahora $seguro no está tainted, pero no has comprobado nada, los datos pueden ser inseguros. Debes ser más específico.


Por client state puedes usar los cookies, reglones (frames) ocultos en forms, parámetros en el query de un URL, uno de los módulos session, ...

danimera escribió:

21.We have had issue with spam being sent through contact forms using the Perl sendmail method by users including mail header in the fields. What solution would you propose?


No trates de enviar los correos usando el ejecutable sendmail. Usa uno de los montones de módulos de CPAN para enviar correos. Y comprueba que los datos que recibes de los forms son los que de verdad quieres aceptar.

danimera escribió:

29. You are a programmer for MySpace.com. Tom wants a new feature - people should be able to preview changes to their profiles before making them permanent. This includes the layout, the text, friends, top friends, photos, etc. The user can go into "preview mode" and review different configurations before making one live. What Design Pattern would you use? What is a potential problem with this feature?


Design Patterns es un término de márquetin. La mayoría de los famosos design patterns deberían formar parte del lenguaje de programación o algún módulo, pero algunas lenguajes lo impiden, así que tienes que reescribir casi el mismo código cada vez. En este caso no es posible decir casi nada sobre la implementación de este modo preview antes de conocer su código actual. La implementación podría ser fácil si los scripts leen los opciones por un módulo u objeto que puede ser modificado para trabajar en un modo preview y leer los datos de un lugar diferente de lo normal, pero también puede forzarte a cambiar muchísimo el código.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Experto Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group