Есть ли проблемы с тем, что я делаю здесь? Я впервые имею дело с чем-то подобным, и я просто хочу убедиться, что я понимаю все риски и т. Д. Для различных методов.
Я использую 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 ?
- Есть ли другие соображения?
что должно быть сделано?
- Есть хороший список нормальных
теги в белый список?