Google
Web dns.bdat.net

Re: [PHP-ES] Cross site scripting / Sql Injection / Otros

From: Mauricio Angulo S ( angulo.m(EN)interplanet.com.mx)
Date: Thu Jul 08 2004 - 18:17:26 CEST


Mis opiniones en breve:

El asunto de la inyeccion de codigo -o ataques css- vuelve vulnerable a
una aplicacion web debido principalmente a que nos se realiza una
validacion adecuada de los datos de entrada. Este es un problema
generado -a mi parecer, por supuesto- por no separar adecuadamente las
capas de presentacion y de proceso a la hora de desarrollar una
aplicacion web.

Algunas recomendaciones para evitar/minimizar la inyeccion de codigo:

* Validar las cabeceras de las paginas.
* Validar los metodos de entrega de datos (GET/POST/etc).
* Filtrar los datos para eliminar datos indeseados. Hace algunos dias
postee en este foro un pequeño codigo para hacer esto, aunque maneras
hay montones, incluyendo validacion por JavaScript o con expresiones
regulares.
* IMPORTANTE: No confiarle la seguridad de un sitio a una variable de
sesion o a una cookie.
* Establecer limites a los campos de entrada de texto
* Hacer validaciones independientes de los datos antes de pasarlos a la
aplicacion: si se espera un numero entonces la entrada debe ser un
numero. En muchas aplicaciones, especialmente en los administradores de
contenido se espera que el usuario utilice etiquetas HTML de estilo,
como negritas, italicas e incluso anclas. Hay que hacer un analisis
previo muy cuidadoso de que etiquetas se pueden aceptar, y de validar
las ligas que se inserten para evitar el cracking por redireccionamiento
de dominios en zonas de confianza, un error muy explotado en Internet
Explorer.
* No utilizar los datos del usuario directamente en instrucciones SQL,
sino utilizarlos como parametros para disparar instrucciones (usando
Switch/Case o if/then/else o algo similar).
* Todos los puntos aplican a los campos HIDDEN. Utilizando Telnet o
enviando datos falsificados utilizando wget o desde una pagina local se
pueden inyectar datos falsos desde un formulario oculto.
* Establecer permisos adecuados de escritura en la base de datos, y
sobre todo evitar utilizar el usuario 'root' para las aplicaciones web.
Es mejor utilizar un usuario con privilegios limitados.
* Finalmente, revisar el log del servidor Web constantemente en busca de
anomalias. Si es posible integrar un log a nuestras aplicaciones para
que nos avise -en caso de instalar las medidas de seguridad mencionadas
arriba- que se intento una inyeccion de codigo, mejor aun.

No se mucho sobre 'abrir un debate', pero si tienen
comentarios/criticas/dudas soy todo oidos (¿o soy todo ojos? ya no
se...)

Saludos a todos y estamos en contacto.

On Thu, 2004-07-08 at 10:26, iphase wrote:
> Hola compañeros !
>
> Estoy haciendo una serie de apuntes sobre css , sql, y ataques similares a
> aplicaciones web, y me pregunto
> si seria posible abrir un debate sobre que medidas preferís y como las
> implementais para protegerse de
> este tipo de ataques ..
>
> Gracias y un saludo !

--
Mauricio Angulo S.
Desarrollador Web
Interplanet, S.A. de C.V.
t: 56.82.50.60
www.SuEmpresa.com
www.Webmasters.org.mx
--
-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


This archive was generated by hypermail 2.1.7 : Tue Sep 21 2004 - 21:34:42 CEST