Generuję kod HTML i chcę wygenerować link bezpieczny dla bazy danych XSS i bazy danych mailto
. Jakie jest właściwe kodowanie do zastosowania tutaj? Jak to się dzieje?Jak poprawnie zakodować link 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));
Czy powinienem używać tutaj UrlEncode
? HtmlEncode
? Czy to, co zrobiłem, to całość? Piszę kod HTML adresu URL, więc jestem trochę niejasny ...
@Quentin, czy to opisujesz? (Zmienione &
s do &
ponieważ mam zamiar HtmlEncode
...)
myLiteral.Text =
HttpUtility.HtmlEncode(HttpUtility.UrlEncode(
string.Format(
"mailto:{0}?Content-Type=text/html&Subject={1}&body={2}",
email_address, subject, body_message)));
Twoja pierwsza wersja jest prawie poprawna, z wyjątkiem tego, że powinno się odblokować '&' s. Przypisujesz go do właściwości Text. Powinien zająć się kodowaniem HTML wewnętrznie. Jedyne, o co musisz się martwić, to fakt, że jest to poprawny URI. –
@ liho1eye: Myślę, że to jest prawdziwe tylko dla Literału ASP, jeśli myLiteral.Mode == Encode, który nie jest domyślny. Ale druga wersja powinna mieć taki efekt, jaki masz, tak? –