加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何使用AntiXss Library正确清理内容?

发布时间:2020-12-15 20:58:01 所属栏目:asp.Net 来源:网络整理
导读:我有一个简单的论坛应用程序,当有人发布任何内容时,我这样做: post.Content = Sanitizer.GetSafeHtml(post.Content); 现在,我不确定我做错了什么,或者发生了什么,但它几乎不允许任何HTML.即使是简单的 b / b太过分了.所以我想这个工具完全没用. 现在我的问
我有一个简单的论坛应用程序,当有人发布任何内容时,我这样做:
post.Content = Sanitizer.GetSafeHtml(post.Content);

现在,我不确定我做错了什么,或者发生了什么,但它几乎不允许任何HTML.即使是简单的< b>< / b>太过分了.所以我想这个工具完全没用.

现在我的问题是:任何人都可以告诉我应该如何消毒我的用户输入,以便他们可以发布一些图像(< img>标签)并使用大胆的重点等?

解决方法

似乎许多人找到了消毒杀菌剂 rather useless.而不是使用消毒剂,只需编码所有东西,然后解码安全部件:
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();
}

请注意,安全解码IMG标记几乎是不可能的,因为攻击者可以通过简单的方法滥用此标记.例子:

<IMG SRC="javascript:alert('XSS');">

<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>

看看这里更全面的XSS Cheat Sheet

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读