Dom Nov 11, 2007 7:37 am
|
 |
danimera
Perlero Adicto

|
Registrado: 23 Jun 2005
Mensajes: 212
Ubicación: Colombia
|
|
| Otra ayuda para otras preguntas que me hacen |
|
|
---------
Ultima edición por danimera el Mie Ene 30, 2008 7:59 am, editado 1 vez |
|
|
|
Dom Nov 11, 2007 4:43 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
|
|
|
|

Sab Nov 17, 2007 10:28 am
|
 |
Jenda
Perlero Nuevo

|
Registrado: 29 Oct 2007
Mensajes: 99
Ubicación: Praga, Republica Checa
|
|
| Re: Otra ayuda para otras preguntas que me hacen |
|
|
| 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. |
|

Powered by phpBB © 2001, 2005 phpBB Group
|