Estoy buscando formas de usar .NET para prevenir ataques XSS y he encontrado los siguientes métodos para codificar datos:
string asdf = WebUtility.UrlEncode(code);
string asdf1 = HttpUtility.UrlEncode(code);
string asdf1a = HttpUtility.UrlEncodeUnicode(code); // OBSOLETE
string asdf1b = HttpUtility.UrlPathEncode(code);
string asdf1c = Uri.EscapeDataString(code);
string asdf1d = Uri.EscapeUriString(code);
string asdf1e = HttpUtility.HtmlEncode(code);
string asdf1f = HttpUtility.HtmlAttributeEncode(code);
(omití los métodos de byte [] ... pero hay más)
Dado que cada uno de estos métodos funciona de una manera completamente diferente, y se ubican en clases completamente diferentes, asumiría que es fácil causar un problema de XSS si se tiene la combinación incorrecta de opciones.
Para una situación dada, ¿cuándo es apropiado usar un método de codificación dado? ¿Por qué?