2009-09-11 14 views
5

Estoy usando Django Contact Form en un sitio web para permitir a los visitantes enviar correos electrónicos.¿Debo escapar caracteres al enviar correos electrónicos?

Actualmente, está escapando caracteres, por lo que las comillas simples y dobles se convierten a ' y " respectivamente. Los correos electrónicos serían más legibles si las comillas se mostraran como ' y ".

Entiendo por qué nunca debo poner entrada no guardada de los visitantes en mis páginas web, debido al riesgo de xss. ¿Existe el mismo riesgo con los correos electrónicos, o está bien enviar los datos no escaneados del visitante?

Respuesta

4

Si estos son mensajes de correo HTML, entonces no le importaría el escapado, ¿por lo tanto, estoy asumiendo que estos son de texto sin formato? En cuyo caso, desea deshabilitar el presupuesto. Puede envolver el cuerpo de su plantilla en

{% autoescape off %} 
... 
{% endautoescape %} 

para dejar sus caracteres solo.

+0

Sí, son correos electrónicos de texto plano. Creo que estaba siendo demasiado paranoico, y me preocupaba que un lector de correo electrónico analizara el texto simple como html. – Alasdair

+0

No es necesario ser paranoico, ya que su correo electrónico estará en formato de texto sin formato, por lo que los clientes "deberían" interpretarlo como texto sin formato y no notar las etiquetas. – Humphrey

+0

No puede convertir un correo electrónico de texto sin formato en un correo electrónico HTML con solo incluir HTML en el cuerpo. El encabezado 'Content-Type: text/html' le dice al cliente que es HTML, mientras que' Content-Type: text/plain' es para mensajes de texto sin formato. Si no hay un encabezado presente, se asume el texto predeterminado. –

0

Todavía codificaré para estar seguro. Dado que la mayoría de los clientes de correo electrónico permiten imágenes, nada impide que alguien use una etiqueta img en un correo electrónico para decir ... obtener la dirección IP de alguien.

+0

Las etiquetas HTML como las imágenes solo son efectivas cuando incluye deliberadamente encabezados MIME para decir que el correo es HTML. Afortunadamente, a diferencia de IE, los remitentes de correo no hacen sniffing de contenido. – bobince

Cuestiones relacionadas