|
|||||||
|
|
|||||||
| Autor: Harold Flores | Tecnicos, PHP, Linux, apache. | ||||||
Con este artículo quiero hablar un poco sobre una de las vulnerabilidades de seguridad, que es común encontrar en las aplicaciones web, o en aplicaciones en una intranet, y que además pueden estar presentes en los navegadores WEB, les estoy hablando del XSS, del inglés Cross-site scripting el cuál es un tipo de agujero informático basado en la explotación de una vulnerabilidad del sistema de validación del HTML.
Brevemente resumiré lo que es el XSS, bueno como lo dije en el parrafó anterior es la abreviatura de "cross site scripting" para no ser confundido con CSS (hoja de estilo de cascada), abarca cualquier ataque que permita ejecutar código de "scripting", como VBScript, JavaScript o PHP, en otro sitio web.
Tipos de XSS Directa (Persistente): consiste en invadir código HTML peligroso en sitios que así lo permitan, incluyendo así etiquetas como < script >,< iframe > , entre otras. Indirecta(Reflejada): consiste en modificar valores que la aplicación web utiliza para pasar variables entre dos páginas, sucede cuando hay un mensaje o una ruta en la URL del navegador, en una cookie, o cualquier otra cabecera HTPP.
Medidas de Seguridad A continuación se citaran las medidas básicas y generales que todo desarrollador, debe de implementar en sus aplicaciones web para disminuir el riesgo de un ataque XSS, cabe destacar que cada desarrollo web, tendrá un ambiente específico y en base a esto es necesario analizar, cual es la mejor táctica para evitar un ataque de este tipo.
1. Limitar el tamaño de los objetos HTML usados, por ejemplo si utilizamos un input test, que servirá para obtener los apellidos de un cliente, es importante darle un límite de caracteres. input id="apellidos" maxlength="60" name="apellidos" type="text" 2. Quitar la opción de autocomplete en los campos utlizados para ingresar contraseñas. input id="clave" maxlength="60" name="clave" type="password" 3. Nunca imprimir directamente el valor de las variables procedentes del usuario, ejemplo las variables del GET, o del POST. input id="text" name="text" type="text" value="$_POST['text']" 4. Definir claramente, que vamos a aceptar en cada una de las entradas, hablamos de enteros, flotantes, correo electrónico, cadena de caracteres y en esta última que es de las más delicadas definir que caracteres son permitidos, es ideal evitar caracteres como < >, pero es muy propio de cada aplicación por eso es importante analizarlo y tener claro que es lo que vamos a aceptar.
Validaciones en PHP. A continuación les presento unas series de funciones para validar las entradas de nuestras aplicaciones dependiendo del tipo, longitud de campo ingresado que como comentamos en la sección anterior en el punto 4 debe ser analizado con detalle, en el momento de la implementación. Valores Enteros, retornamos el valor entero, en caso contrario se retorna el valor default. function getVarInt($param, $default = 0){
Alfabetico con espacios en blanco, ejemplo: Nombre Apellido1 Apellido2 function getVarAlphaSpace($param, $max = -1, $default = NULL){
Y recordar que lo mas importante, es tener muy claro que necesitamos y nunca confiar en datos que vengan directos del usuario, a nuestra aplicación, un poco de paciencia con las funciones para validar, y ojalá contar con alguna herramienta para probar que tan vulnerable puede ser nuestra aplicación y en caso de detectar un problema, repararlo lo mas pronto posible y tomar nota para no volver a caer en el. [ Regresar ] |
|||||||