Есть ли проблемы с тем, что я здесь делаю? Я впервые сталкиваюсь с чем-то подобным, и я просто хочу убедиться, что понимаю все риски и т. Д., Связанные с различными методами.
Я использую WMD для ввода данных пользователем, и я показываю его с буквальным контролем. Поскольку после ввода его нельзя редактировать, я буду хранить HTML, а не Markdown,
input = Server.HTMLEncode(stringThatComesFromWMDTextArea)
А затем запустите что-то вроде следующего для тегов, которые я хочу, чтобы пользователи могли использовать.
// Unescape whitelisted tags.
string output = input.Replace("<b>", "<b>").Replace("</b>", "</b>")
.Replace("<i>", "<i>").Replace("</i>", "</i>");
Изменить Вот чем я сейчас занимаюсь:
public static string EncodeAndWhitelist(string html)
{
string[] whiteList = { "b", "i", "strong", "img", "ul", "li" };
string encodedHTML = HttpUtility.HtmlEncode(html);
foreach (string wl in whiteList)
encodedHTML = encodedHTML.Replace("<" + wl + ">", "<" + wl + ">").Replace("</" + wl + ">", "</" + wl + ">");
return encodedHTML;
}
- Будет ли то, что я здесь делаю, защитить от XSS?
- Есть ли еще какие-то соображения, которые следует учесть?
- Есть ли хороший список нормальных тегов для внесения в белый список?