Есть ли проблемы с тем, что я здесь делаю? Это мой первый раз, когда мы имеем дело с чем-то подобным, и я просто хочу убедиться, что я понимаю все риски и т. Д. Для разных методов.Белые списки, предотвращающие XSS с контролем ОМУ в C#
Я использую 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?
- Есть ли другие соображения , которые должны быть сделаны?
- Есть ли хороший список нормальных тегов для белого списка?
Этот код не будет работать для тега «IMG», так как замена «<img>» не допускает атрибут «src». – David