¿Cómo mostrar de forma segura los correos electrónicos html como lo hace gmail?

9

Estoy creando un correo web, que debe poder mostrar correos electrónicos html. Pero, ¿cómo evitar los ataques xss y similares, sin perder el formato html?

En gmail, cuando recibo algunos correos electrónicos de, digamos, twitter, están bien formateados. Estoy buscando algo como esto.

Html5 admite el atributo sandbox para iframes, que parece resolver mi problema, pero está mal soportado. Necesito una solución que funcione en los navegadores MODERNOS, pero que no se vuelva insegura en los navegadores antiguos. Es aceptable que esto NO FUNCIONE en absoluto en los navegadores antiguos, pero no puede volverse inseguro. Debería funcionar en IE9 y superior.

¿Cuáles son mis opciones?

    
pregunta user3702861 01.03.2015 - 12:16
fuente

2 respuestas

16

Google gasta mucho dinero cada año en la recompensa de errores para garantizar que Gmail no sea susceptible a XSS. Parte de este esfuerzo ha producido Google-Caja , que es un proyecto de código abierto que filtra HTML a un "seguro". "subconjunto.

Los entornos limitadores de filtro HTML como Caja dependen de una solución "más antigua" que utiliza técnicas de análisis complejas y miles de expresiones regulares para filtrar las cargas útiles de XSS. Una solución "más nueva" es la Content-Security Policy , que permite al desarrollador cree páginas HTML que sean totalmente inmunes al XSS reflexivo y persistente, y esta es una protección más fuerte que la que puede proporcionar Caja. CSP sería la mejor solución, pero es "demasiado nueva", IE y los navegadores más antiguos no lo admiten.

Si necesitara jail HTML, utilizaría Caja con un conjunto de reglas CSP estricto.

    
respondido por el rook 01.03.2015 - 17:49
fuente
2

También puedes hacer esto:

Para cada página html que está incrustada en un correo, descarga el img en su servidor para fines de visualización, vuelve a escribir cada enlace para apuntar a su caché, elimina el javascript que reside en esa página. Si bien esto puede no ser una buena idea, carga / dinero / almacenamiento / ancho de banda. Esto funciona muy bien en los correos que se le envían, pero tienen algún tipo de elemento de devolución de llamada / teléfono de inicio.

    
respondido por el munchkin 01.03.2015 - 20:19
fuente

Lea otras preguntas en las etiquetas