私がここでしていることに何か問題はありますか?このようなことを扱うのは初めてですが、さまざまな方法のリスクなどをすべて理解していることを確認したいと思います。
WMDを使用してユーザー入力を取得し、リテラルコントロールで表示しています。入力すると編集できないので、マークダウンではなくHTMLを保存します。
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から私を保護し続けますか?
- 他に考慮すべき点はありますか?
- ホワイトリストに登録する通常のタグの適切なリストはありますか?