alert(1)
es la prueba por excelencia para las secuencias de comandos entre sitios (XSS), porque es rápido de escribir y funciona en todos los navegadores.
Prueba para XSS
Si puede pegar esto en un cuadro de texto en un sitio (como un campo de comentarios), y aparece un cuadro de alerta en la pantalla de otro usuario, entonces ese sitio es vulnerable a XSS, porque sabe que puede ejecutar Javascript como si eras ese otro usuario: robando credenciales, falsificando su identidad, robando datos, suplantando su identidad o la de otra cuenta de usuario, o incluso simplemente enviando tu ataque a otro objetivo. XSS es increíblemente malo e incluso más fácil de verificar y corregir que la inyección SQL; todos deberían saber cómo hacerlo, y así es como.
- ¿Cuál es la mejor configuración para implementar una aplicación Rails 5 en un servidor Windows? ¿Es más fácil si la aplicación está construida con JRuby?
- ¿Cómo aprendo Django procedente de Flask?
- ¿Cuál es una manera de crear mi propio ensayo?
- ¿Cómo afecta la longitud del formulario de registro / registro a la conversión?
- Cómo integrar Captcha en un sitio web de Laravel
Para automatizar las pruebas de XSS (y otras vulnerabilidades) en todo su sitio, existen herramientas de fuzzing de código abierto y comerciales (como Burp Suite), que, por supuesto, harán un trabajo mucho más completo de lo que puede hacer simplemente pegando ` alert (1) `, pero esa sigue siendo una gran primera prueba.
Arreglando XSS
La reparación de XSS puede ser fácil en la mayoría de los idiomas: solo use una biblioteca que incorpore las recomendaciones de OWASP para el saneamiento de HTML antes de almacenar la entrada entrante y no confiable en la base de datos (también debe desinfectar los ataques de inyección SQL; estos pueden ser aún más catastróficos), o antes de mostrar cualquier texto recibido del servidor en la pantalla. Busque en la web la protección de inyección SQL para su lenguaje de programación. (A menudo, la prevención de inyección SQL se integrará en su biblioteca de base de datos).
OWASP tiene una guía de referencia para la prevención y prueba de XSS aquí.
Prueba de secuencias de comandos de sitios cruzados reflejados (OTG-INPVAL-001)
No se deje disuadir si esto parece demasiado desafiante o requiere mucho tiempo; vale la pena hacerlo y generalmente solo requiere una línea adicional de código. Simplemente busque en las bibliotecas web su idioma o nombre de marco que desinfecte los datos de XSS.
Un ejemplo rápido usando el paquete XSS para node.js:
// Sanitize your incoming, untrusted text just by using xss():
xss = require('xss');
// later, after getting input from the user
// (don't forget about SQL injection before writing to DB!)
var clean_string = xss(untrusted_string);
store_it_somewhere(clean_string);
Eso es todo al respecto.
Pero, si ve alert (1) en su base de datos, ¡alguien estaba probando su aplicación para detectar vulnerabilidades! Si no fue usted, entonces es posible que desee ofrecer una recompensa por errores y ver si alguien encuentra algo. 🙂