asp.net c# 过滤 html编辑器内容

类似文章发布系统,要过滤用在html编辑器里面编辑的内容,去掉超链接,script之类的,只保留文章排版样式... 类似文章发布系统,要过滤用在html编辑器里面编辑的内容,去掉超链接,script 之类的, 只保留文章 排版样式 展开
 我来答
动漫行家
2016-01-26 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:89%
帮助的人:788万
展开全部
Asp.net中如何过滤html,js,css代码
以下为引用的内容:

#region/// 过滤html,js,css代码
/// <summary>
/// 过滤html,js,css代码
/// </summary>
/// <param name="html">参数传入</param>
/// <returns></returns>
public static 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;
}
#endregion
#region /// 过滤p /p代码
/// <summary>
/// 过滤p /p代码
/// </summary>
/// <param name="html">参数传入</param>
/// <returns></returns>
public static string InputStr(string html)
{
html = html.Replace(@"\<img[^\>]+\>", "");
html = html.Replace(@"<p>", "");
html = html.Replace(@"</p>", "");
return html;
}
#endregion
百度网友9a15341
2015-01-10 · TA获得超过282个赞
知道小有建树答主
回答量:246
采纳率:60%
帮助的人:110万
展开全部
正则表达式
"<a[^>]*?>" :表示匹配<a ...>一个尖括号的东西
"</a>" :表示匹配</a> 下面scrip也一样

由于script里面的代码是不要的,可以只写一个正则:
"<script[\s\S]*?</script>"
再Replace空

例:
Regex reg = new Regex(@"<a[^>]*?>" );
MatchCollection mc = reg.Matches(html); //html就是编辑器里的内容,得到mc就是匹配到的所有<a...>的数组集合
foreach (Match m in mc)
{
string s=m.tostring();
html. Replace(s,"");
}
//代码没有调试过,思路就是这样了,正则式也不太确定,我也不太会,先试试吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
coolbi5
2014-12-26 · TA获得超过1万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:2445万
展开全部
我提供个思路你参考一下,PHP 里面是有相应的函数可以直接过滤的,我不知道ASP里面有没有,
如果没有你可以这么做,文章里面的HTML元素都是放在<>尖括号里面的,这样的话从数据库放到页面上可能会被识别成有危害的HTML元素比如SCRIPT造成危害,你可以在数据存入数据库的时候写个函数 用HTML 实体符号,比如& lt ; & gt ; (前面的实体符号中间有空格,百度也过滤了)
把尖括号替换掉,这样就在页面就不会被是被成HTML的元素了!
更多追问追答
追问

  我要保存用户提交的html源码,但是从中过滤危险的,我自己尝试着写了个正则替换的,亲,帮我看看还有什么标签要补充的~

追答

ASP 我不是很懂,但方法和PHP想通的,你只要把尖括号替换掉,HTML元素就会失效了,我在PHP里面就是这么做的! 你试试,其他的就是过滤敏感字了,比如领导人的名字什么的,这个数据量大的话,要用数据库了

HTML 实体就那么几个,不用正则也可以,VB好像有个replace,你用这个把尖括号替换成

后面的实体符号看看能达到效果不!

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1997排长
高粉答主

2016-01-15 · 说的都是干货,快来关注
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:812万
展开全部
正则表达式
"<a[^>]*?>" :表示匹配<a ...>一个尖括号的东西
"</a>" :表示匹配</a> 下面scrip也一样

由于script里面的代码是不要的,可以只写一个正则:
"<script[\s\S]*?</script>"
再Replace空

例:
Regex reg = new Regex(@"<a[^>]*?>" );
MatchCollection mc = reg.Matches(html); //html就是编辑器里的内容,得到mc就是匹配到的所有<a...>的数组集合
foreach (Match m in mc)
{
string s=m.tostring();
html. Replace(s,"");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhidaoxb
2016-01-06 · TA获得超过359个赞
知道小有建树答主
回答量:344
采纳率:100%
帮助的人:75.1万
展开全部
正则表达式:
1. "<a[^>]*?>" :表示匹配<a ...>一个尖括号的东西
2. "</a>" :表示匹配</a> 下面scrip也一样

由于script里面的代码是不要的,可以只写一个正则:
"<script[\s\S]*?></script>"
再Replace空

参考例子:
Regex reg = new Regex(@"<a[^>]*?>" );
MatchCollection mc = reg.Matches(html); //html就是编辑器里的内容,得到mc就是匹配到的所有<a...>的数组集合
foreach (Match m in mc)
{
string s=m.tostring();
html. Replace(s,"");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
侯九九By
2015-01-04 · TA获得超过538个赞
知道小有建树答主
回答量:366
采纳率:50%
帮助的人:160万
展开全部
通过HtmlAgilityPack这个组件可以取得所有的HTML控件。然后查找所有的ON事件和javascript:;值之类的就可以了。

具体你可以去找一下大象半生鱼的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式