我正在生成一些HTML,我想生成一個XSS和數據庫內容安全的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));
我應該使用UrlEncode
這裏? HtmlEncode
?做我做的,然後HtmlEncode
整體?我正在編寫一個URL的HTML,所以我有點不清楚...
@Quentin,這是你在描述什麼? (改變&
s到&
,因爲我即將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。 –
@ liho1eye:我認爲這隻適用於ASP Literal,如果myLiteral.Mode == Encode,這不是默認值。但是第二個版本應該有你想要的效果,是嗎? –