我正在生成一些HTML并且想要生成一个安全的mailto
链接,以防止XSS和数据库内容。这里应该使用什么编码方式呢?下面是正确的编码方式:
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));
我应该在这里使用
UrlEncode
吗?还是HtmlEncode
?我应该像我所做的那样,然后对整个内容进行HtmlEncode
?我正在编写URL的HTML,所以有点不清楚... @Quentin,你描述的是这个吗?(将&
更改为&
,因为我即将进行HtmlEncode
...)myLiteral.Text =
HttpUtility.HtmlEncode(HttpUtility.UrlEncode(
string.Format(
"mailto:{0}?Content-Type=text/html&Subject={1}&body={2}",
email_address, subject, body_message)));
&
。你正在将它分配给 Text 属性。它应该在内部处理 HTML 编码。你唯一需要担心的是它是否是有效的 URI。 - Ilia G