oje*_*jek 6 .net asp.net security xss antixsslibrary
我有一个简单的论坛应用程序,当有人发布任何内容时,我这样做:
post.Content = Sanitizer.GetSafeHtml(post.Content);
Run Code Online (Sandbox Code Playgroud)
现在,我不确定我做错了什么,或者发生了什么,但它几乎不允许任何HTML.即使是简单<b></b>也是太过分了.所以我想这个工具完全没用.
现在我的问题是:有谁能告诉我应该如何消毒我的用户输入,以便他们可以发布一些图像(<img>标签)并使用大胆的重点等?
似乎许多人发现消毒剂相当无用.不要使用消毒剂,只需编码所有内容,然后解码安全部件:
private static readonly Tuple<string, string>[] WhiteList = (new string[]
{
"<b>", "</b>", "<i>", "</i>"
})
.Select(tag => Tuple.Create(AntiXss.Encoder.HtmlEncode(tag), tag))
.ToArray();
public static string Sanitize(string html)
{
var safeHtml = new StringBuilder(AntiXss.Encoder.HtmlEncode(html));
for (int index = 0; index < WhiteList.Length; index++)
{
string encodedTag = WhiteList[index].Item1;
string decodedTag = WhiteList[index].Item2;
safeHtml.Replace(encodedTag,decodedTag);
}
return safeHtml.ToString();
}
Run Code Online (Sandbox Code Playgroud)
请注意,安全解码IMG标记几乎是不可能的,因为攻击者可以通过简单的方法滥用此标记.例子:
<IMG SRC="javascript:alert('XSS');">
<IMG SRC=javascript:alert('XSS')>
Run Code Online (Sandbox Code Playgroud)
看看这里有更多全面的XSS备忘单
| 归档时间: |
|
| 查看次数: |
12198 次 |
| 最近记录: |