Estoy generando algo de HTML y quiero generar un enlace mailto
de seguridad de contenido de base de datos XSS. ¿Cuál es la codificación adecuada para usar aquí? ¿Cómo es esto?¿Cómo codifico correctamente un enlace de mailto?
myLiteral.Text = string.Format(
"mailto:{0}?Content-Type=text/html&Subject={1}&body={2}",
HttpUtility.UrlEncode(email_address),
HttpUtility.UrlEncode(subject),
HttpUtility.UrlEncode(body_message));
¿Debo usar UrlEncode
aquí? HtmlEncode
? Haz lo que hice, entonces HtmlEncode
la totalidad? Estoy escribiendo HTML de una URL, así que estoy un poco confuso ...
@Quentin, ¿es esto lo que describes? (Cambiado &
s a &
ya que estoy a punto de HtmlEncode
...)
myLiteral.Text =
HttpUtility.HtmlEncode(HttpUtility.UrlEncode(
string.Format(
"mailto:{0}?Content-Type=text/html&Subject={1}&body={2}",
email_address, subject, body_message)));
Su primera versión es casi correcta, excepto que debe descodificar el '&' s. Lo está asignando a la propiedad Text. Debería ocuparse de la codificación HTML internamente. Lo único de lo que debe preocuparse es que sea un URI válido. –
@ liho1eye: Creo que eso solo es cierto para ASP Literal if myLiteral.Mode == Encode, que no es el predeterminado. Pero la segunda versión debería tener el efecto que buscabas, ¿sí? –