¿Cuál es el motivo de la vulnerabilidad de inyección xss? ¿Cuáles son los pasos en el proceso de inyección xss? ¿Cuáles son algunas formas de prevenir la inyección de XSS?
1. ¿Qué es XSS?
XSS también se llama CSS (Cross Site Script) y ataque de secuencias de comandos entre sitios. Se refiere a un atacante malicioso que inserta código html malicioso en una página web. Cuando un usuario navega por la página web, se ejecutará el código html incrustado en la página web, logrando así un propósito especial malicioso. XSS es un ataque pasivo y no es fácil de usar debido a su pasividad, por lo que mucha gente suele llamarlo dañino.
En la era WEB2.0, el énfasis está en la interacción, lo que aumenta en gran medida las oportunidades para que los usuarios ingresen información. En este caso, nosotros, como desarrolladores, debemos estar más atentos al desarrollar.
El método principal de ataque XSS
El método de ataque XSS no es más que utilizar atributos HTML para realizar varios intentos de descubrir el método de inyección. Ahora analicemos las tres formas principales.
Primer tipo: para la entrada normal del usuario, la página sigue siendo una salida de contenido.
Abra /goproducttest/test.jsp (limitado a la IP de la empresa), ingrese: lt;scriptgt;alert('xss')lt;/scriptgt;, el script JS se ejecutó exitosamente. Una vez que el atacante descubre este método, puede difundir el formato del enlace (/goproducttest/test.jsp?key=JSCODE), como /goproducttest/test.jsp?key=lt;scriptgt;alert('xss ')amp ;lt ;/scriptgt;, y disfrazar adecuadamente JSCODE, por ejemplo:
/goproducttest/test.jsp?key=3c7363726970743e616c657274282778737327293c2f7363726970743e Cuando otros usuarios señalan este enlace, JS se ejecutará, lo que provocará consecuencias muy graves. , como saltar a la página del troyano, obtener la COOKIE del usuario que ha iniciado sesión, etc.
Segundo tipo: entrada del usuario en el área de código
El principio es que la entrada del usuario no debe incluirse en el área de código.
Tercer tipo: Páginas que permiten a los usuarios introducir etiquetas HTML.
Los usuarios pueden enviar algún código HTML personalizado, que es la situación más peligrosa. Debido a que, de forma predeterminada, el navegador IE usa codificación UNICODE, el código HTML se puede escribir en ASCII o puede usar "/" para conectar cadenas hexadecimales, lo que hace que el filtrado sea extremadamente complicado, como los siguientes cuatro ejemplos, todo se puede ejecutar en IE.
1. Utilice el script JS directamente.
lt; img src="javascript: alert('xss')"
2.
lt;img src="javascript:alert('xss')" /gt;
3.
3, inserte el código utilizando la condición de activación marcada y transcodificar.
lt; img onerror="alert('xss')" /gt;
4./gt
4. Escribe en hexadecimal Enter (funciona) en Maxthon)
lt; img STYLE="imagen de fondo:/75/72/6c/28/6a/61/76/61/73/63/72/69/ 70/74/3a /61/6c/65/72/74/28/27/58/53/53/27/29/29″gt;
El método de escritura anterior es igual a tolt;img STYLE="background-image: url( javascript: alert('XSS'))"gt;
3. Soluciones de ataque XSS
Recuerde dos principios: filtrar la entrada y escapar de la salida.
La implementación específica es la siguiente:
Primero, realice una verificación de entrada confiable en el extremo de entrada para todo el contenido enviado por el usuario. El contenido enviado incluye URL, palabras clave de consulta, encabezado http. y publicaciones, etc.
En segundo lugar, utilice etiquetas
En tercer lugar, implemente estrictamente el control del recuento de palabras de entrada de caracteres.
En cuarto lugar, no debe haber ninguna entrada del usuario en el área de ejecución del script.