public string checkStr(string html)    
      {    
          System.Text.RegularExpressions.Regex regex1 = new System.Text.RegularExpressions.Regex(@"<script[\s\S]+</script *>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          System.Text.RegularExpressions.Regex regex2 = new System.Text.RegularExpressions.Regex(@" href *= *[\s\S]*script *:", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          System.Text.RegularExpressions.Regex regex3 = new System.Text.RegularExpressions.Regex(@" no[\s\S]*=", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          System.Text.RegularExpressions.Regex regex4 = new System.Text.RegularExpressions.Regex(@"<iframe[\s\S]+</iframe *>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          System.Text.RegularExpressions.Regex regex5 = new System.Text.RegularExpressions.Regex(@"<frameset[\s\S]+</frameset *>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          System.Text.RegularExpressions.Regex regex6 = new System.Text.RegularExpressions.Regex(@"\<img[^\>]+\>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);     
          System.Text.RegularExpressions.Regex regex7 = new System.Text.RegularExpressions.Regex(@"</p>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          System.Text.RegularExpressions.Regex regex8 = new System.Text.RegularExpressions.Regex(@"<p>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          System.Text.RegularExpressions.Regex regex9 = new System.Text.RegularExpressions.Regex(@"<[^>]*>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    
          html = regex1.Replace(html, ""); //过滤<script></script>标记    
          html = regex2.Replace(html, ""); //过滤href=JavaScript: (<A>) 属性    
          html = regex3.Replace(html, " _disibledevent="); //过滤其它控件的on...事件    
          html = regex4.Replace(html, ""); //过滤iframe    
          html = regex5.Replace(html, ""); //过滤frameset    
          html = regex6.Replace(html, ""); //过滤frameset    
          html = regex7.Replace(html, ""); //过滤frameset    
          html = regex8.Replace(html, ""); //过滤frameset    
          html = regex9.Replace(html, "");    
          html = html.Replace(" ", "");    
          html = html.Replace("</strong>", "");    
          html = html.Replace("<strong>", "");    
          return html;    
        }    

解决方案 »

  1.   

    string str=""str=Regex.Replace(str,@"<.*?[^<].*?[^]].*?>","");
      

  2.   

    改正:
    str=Regex.Replace(str,@"<.*?[^<].*?[^>].*?>","");
      

  3.   


    string str=""str=Server.HtmlEncode(str);
      

  4.   

    HtmlEncode处理一下,让他们输入的标签无效.
      

  5.   

    HtmlEncode对于文本编辑器就没用了,只能过滤了吧。 最近刚看了XSS攻击正考虑这个问题,如何有效的过滤文本编辑器中的非法脚本呢?
      

  6.   

    文本编辑器的数据提交到后台,入库前不就可以HtmlEncode
      

  7.   

    问题是文本编辑器的内容都被你编码了那这文本编辑器留着干嘛用,还不如直接扔textbox用?总不能显示到页面时再解码吧,那不就等于对输入没进行任何操作。
      

  8.   

    @"<[^>]*>" 这条把你的都包括了。