Últimamente estoy haciendo cositas en PHP+mySQL (utilizo el editor Kate, que reconoce el lenguaje -creo que hasta PHP4- y, al utilizar distintos colores para el texto, facilita mucho la lectura), y me he interesado en temas de seguridad.
Ya hace tiempo leí (creo que era en una revista de Oracle.. la mandan gratuitamente) que era mejor guardar un hash (md5, sha1 y funciones por el estilo) del password, a guardar el propio password en la BBDD de usuarios.
Y ahora algo relacionado con la seguridad: un artículo encontrado en Barrapunto, que trata del mismo tema (de ésta charla):
para evitar la inyeccion de codigo, funciona muy bien lo siguienta:
seguridad:
* Escapar los datos con las herramientas nativas del sistema, nunca intentar escapar sql a mano
* Utilizar mecanismos de objetos (como los que tiene VB.NET) en lugar de construir sentencias a mano
* Utilizar procedimientos almacenados
* Utilizar un lenguaje fuertemente tipado, y utilizar los tipos de este lenguaje
defensas en profunidad:
* Crear usuarios con permisos limitados y usarlos, utilizando la regla "los minimos permisos necesarios para poder realizar su labor"
* Expresar lo que se quiere transmitir al interprete relacional lo que se quiere decir con abundantes parentesis
* Utilizar procedimientos almacenados.
defensas por la oscuridad:
* Mantener la estructura de la base de datos secreta (=no volcar los errores al usuario con todo lujo de detalles internos :D)
* Utilizar Vistas y no las tablas directamente.
* Utilizar procedimientos almacenados.
matenimiento:
* Lanzar el proceso de la base de datos con pocos privilegios.
* Estudiar que tipos de SQL ejecuta dentro de un entorno seguro (para evitar un XSS de un log)
* Actualizar el servidor de SQL cuando aparezcan vulnerabilidad para la version que se utiliza. Con caracter de urgencia si esta conectado a internet.
La cantidad y la profundidad de estas medidas que se apliquen depende de las herramientas que utilicemos, de lo profesionales y expertos que seamos, y de lo que este dispuesto a pagar el cliente. Si hay un absoluto minimo, es utilizar las herramientas de escape de SQL del sistema.
No hay comentarios:
Publicar un comentario