• Publicidad

Otra ayuda para otras preguntas que me hacen

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Otra ayuda para otras preguntas que me hacen

Notapor danimera » 2007-11-11 08:37 @400

---------
Última edición por danimera el 2008-01-30 08:59 @416, editado 1 vez en total
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Notapor explorer » 2007-11-11 17:43 @780

He encontrado un libro sobre Design Paterns, en el propio CPAN:
http://search.cpan.org/perldoc?Object:: ... gnPatterns
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Otra ayuda para otras preguntas que me hacen

Notapor Jenda » 2007-11-17 11:28 @519

danimera escribiste: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í:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
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"; ???
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $sth = $dbh->prepare("SELECT * FROM Table WHERE Nombre = ?");
...
$sth->execute( $nombre);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$inseguro =~ /^(.*)$/;
my $seguro = $1;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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 escribiste: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 escribiste: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.
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados