asp.net c# 过滤 html编辑器内容
类似文章发布系统,要过滤用在html编辑器里面编辑的内容,去掉超链接,script之类的,只保留文章排版样式...
类似文章发布系统,要过滤用在html编辑器里面编辑的内容,去掉超链接,script 之类的, 只保留文章 排版样式
展开
6个回答
展开全部
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
以下为引用的内容:
#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
展开全部
正则表达式
"<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,"");
}
//代码没有调试过,思路就是这样了,正则式也不太确定,我也不太会,先试试吧
"<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,"");
}
//代码没有调试过,思路就是这样了,正则式也不太确定,我也不太会,先试试吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我提供个思路你参考一下,PHP 里面是有相应的函数可以直接过滤的,我不知道ASP里面有没有,
如果没有你可以这么做,文章里面的HTML元素都是放在<>尖括号里面的,这样的话从数据库放到页面上可能会被识别成有危害的HTML元素比如SCRIPT造成危害,你可以在数据存入数据库的时候写个函数 用HTML 实体符号,比如& lt ; & gt ; (前面的实体符号中间有空格,百度也过滤了)
把尖括号替换掉,这样就在页面就不会被是被成HTML的元素了!
如果没有你可以这么做,文章里面的HTML元素都是放在<>尖括号里面的,这样的话从数据库放到页面上可能会被识别成有危害的HTML元素比如SCRIPT造成危害,你可以在数据存入数据库的时候写个函数 用HTML 实体符号,比如& lt ; & gt ; (前面的实体符号中间有空格,百度也过滤了)
把尖括号替换掉,这样就在页面就不会被是被成HTML的元素了!
更多追问追答
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正则表达式
"<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,"");
}
"<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,"");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正则表达式:
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,"");
}
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,"");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过HtmlAgilityPack这个组件可以取得所有的HTML控件。然后查找所有的ON事件和javascript:;值之类的就可以了。
具体你可以去找一下大象半生鱼的方法
具体你可以去找一下大象半生鱼的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询