Alfumao escribiste: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í:
Using perl Syntax Highlighting
for ($var1, $var2, $var3, $var4) {
s/\W//g;
}
Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
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 escribiste: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.