【发布时间】:2011-01-07 10:51:00
【问题描述】:
我在这里做的有什么问题吗?这是我第一次处理这样的事情,我只是想确保我了解不同方法的所有风险等。
我正在使用 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”属性”。
标签: c# asp.net xss wmd whitelist