.NET实现Script标记清除功能代码

当今网页中经常使用到网页编辑器,因为人们需要在网页中插入图片,视频,样式等html代码内容,这使得网页的信息更加丰富。随之而来的,也给程序开发者带来了不少麻烦,因为提交的html中难免会出现不安全标记和非法标记,比如script,比如未知标签。这需要我们编写大量的程序代码去分析指定用户提交的html信息安全性,标准性。

方法1:

今天我要给大家推荐一个组件,他可以智能的分析出代码的出错部份和清除出错部份,并且配置比较简单。他的名字叫SafeHelper,通过配置文件设定的标记外,他将清楚和检查出不允许出现的标记。使用方法相当简单,只需要调用一个静态方法即可。

第一步,新建一个文件名为“wuxiu.HtmlAnalyserConfig.xml”的xml文件到网站跟目录,并添写以下代码:

<?xml version="1.0" encoding="utf-8" ?>
<HtmlAnylyser >
  <AllowTags>
    <div attrs="class|style"/>
    <ul attrs="class"/>
    <li/>
    <table attrs="class|cellpadding|cellspacing|border|width"/>
    <tr attrs="class"/>
    <th attrs="class"/>
    <td attrs="class"/>
    <span attrs="style|class"/>
    <object attrs="classid|codebase|width|height"/>
    <param attrs="name|value"/>
    <embed attrs="src|width|height|quality|pluginspage|type|wmode"/>
    <a attrs="href|target|title"/>
    <h1 attrs="class"/>
    <h2 attrs="class"/>
    <h3 attrs="class"/>
    <h4 attrs="class"/>
    <h5 attrs="class"/>
    <h6 attrs="class"/>
    <strong attrs="class"/>
    <b attrs="class"/>
    <i attrs="class"/>
    <em attrs="class"/>
    <u attrs="class"/>
    <hr attrs="class"/>
    <br attrs="class"/>
    <img attrs="class|src|width|height|alt"/>
    <p attrs="class"/>
    <ol attrs="class"/>
    <dl attrs="class"/>
    <dt attrs="class"/>
    <dd attrs="class"/>
  </AllowTags>
</HtmlAnylyser>

第二步,添加dll引用,safehelper官网:http://www.wuxiu.org/downloads.html

第三步,调用如下代码可以实现对html中未知标记清除(wuxiu.HtmlAnalyserConfig.xml中未定义的所有标记):

string html = "<script>alert(‘yes‘);</script><p>content</p>";
html = wuxiu.SafeHelper.HtmlSafer.HtmlSaferAnalyser.ToSafeHtml(html);
Response.Write(html);

或检查所有未知标记

string html = "<script>alert(‘yes‘);</script><p>myhtmlcontent</p>";
string [] dangers = wuxiu.SafeHelper.HtmlSafer.HtmlSaferAnalyser.ValidHtml(html,false);
foreach (string danger_tag in dangers)
{
    Response.Write(danger_tag+"<br/>");
}

清除所有Html标记

string text=wuxiu.SafeHelper.HtmlSafer.HtmlSaferAnalyser.ClearHtmlTags("<p>hello world</p>");

方法二,通过正则表达式匹配出script危险标记:

public static string StripHTML(string strHtml)
{
    string[]aryReg =
    {
      @"<script[^>]*?>.*?</script>",

      @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""‘])(\\["
        "‘tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>", @"([\r\n])[\s]+", @
        "&(quot|#34);", @"&(amp|#38);", @"&(lt|#60);", @"&(gt|#62);", @
        "&(nbsp|#160);", @"&(iexcl|#161);", @"&(cent|#162);", @"&(pound|#163);",
        @"&(copy|#169);", @"&#(\d+);", @"-->", @"<!--.*\n"
    };

    string[]aryRep =
    {
      "", "", "", "\"", "&", "<", ">", "   ", "\xa1", //chr(161),
      "\xa2", //chr(162),
      "\xa3", //chr(163),
      "\xa9", //chr(169),
      "", "\r\n", ""
    };

    string newReg = aryReg[0];
    string strOutput = strHtml;
    for (int i = 0; i < aryReg.Length; i++)
    {
      Regex regex = new Regex(aryReg[i], RegexOptions.IgnoreCase);
      strOutput = regex.Replace(strOutput, aryRep[i]);
    }
    strOutput.Replace("<", "");
    strOutput.Replace(">", "");
    strOutput.Replace("\r\n", "");
    return strOutput;
}

.NET实现Script标记清除功能代码

时间: 2024-12-15 07:15:16

.NET实现Script标记清除功能代码的相关文章

二值图像连通域标记算法与代码

这里列举二值图像连通域标记算法包括直接扫描标记算法和二值图像连通域标记快速算法 一.直接扫描标记算法把连续区域作同一个标记,常见的四邻域标记算法和八邻域标记算法. 1.  四邻域标记算法: 1)   判断此点四邻域中的最左,最上有没有点,如果都没有点,则表示一个新的区域的开始. 2)   如果此点四邻域中的最左有点,最上没有点,则标记此点为最左点的值:如果此点四邻域中的最左没有点,最上有点,则标记此点为最上点的值. 3)   如果此点四邻域中的最左有点,最上都有点,则标记此点为这两个中的最小的标

js常用功能代码

js常用功能代码(持续更新): 1,--折叠与展开 <input id="btnDisplay" type="button" class="baocun2" value="添加" onclick="changeDisplay()" /> <script type="text/javascript"> function changeDisplay() { var h

jQuery实现的输入文本计数功能代码

jQuery实现的输入文本计数功能代码:在一些比较人性化的留言回复功能中,都有这样的设计,那就是当输入文本的时候,能够实现计数功能,可以提示用户还能能够输入多少文字,这样可以便于用户选择更合适的语言描述,下面就是一段能够实现此功能的代码,需要的朋友可以进行一下借鉴.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author&q

调用新浪微博接口,实现“分享”功能——代码实现

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div> <p>点击下面的按钮可以将这段文字和图片分享到新浪微博哦!@独行冰海</p> <img src='http://t.cn/zRxMzZE' title='独

jQuery实现点击文本框清除内容代码实例

jQuery实现点击文本框清除内容代码实例:本章节介绍一下文本框最简单的一个人性化措施,就是点击文本框的时候能够删除里面的提示文本.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title&g

使用jQuery练习全选-取消-反选-显示选择内容等功能代码

<span style="font-size:24px;color:#ff0000;">部长练习全选-取消-反选-显示选择内容等功能代码:</span> <!doctype html> <html> <head> <meta charset="gb2312"> <title>部长练习全选-取消-反选-显示选择内容等功能</title> <script src=&qu

Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框

转载请注明出处http://blog.csdn.net/xiaanming/article/details/11066685 今天给大家带来一个很实用的小控件ClearEditText,就是在Android系统的输入框右边加入一个小图标,点击小图标可以清除输入框里面的内容,IOS上面直接设置某个属性就可以实现这一功能,但是Android原生EditText不具备此功能,所以要想实现这一功能我们需要重写EditText,接下来就带大家来实现这一小小的功能 我们知道,我们可以为我们的输入框在上下左右

去除html标记和替换script标记

1: /// <summary> 2: /// 去除HTML标记 3: /// </summary> 4: /// <param name="NoHTML">包括HTML的源码 </param> 5: /// <returns>已经去除后的文字</returns> 6: public static string RemoveHTML(string Htmlstring) 7: { 8: if (string.IsN

(转载) Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框

Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框 标签: Android清除功能EditText仿IOS的输入框 2013-09-04 17:33 70865人阅读 评论(57) 收藏 举报  分类: Android UI设计(7)  版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处http://blog.csdn.net/xiaanming/article/details/11066685 今天给大家带来一个很实用的小控件ClearEdit