|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不可能天天有学习.net),我一同学说,你应该早就有作品啦。我惶惶然……asp.net|剧本|正则在做一些网站(出格是BBS之类)时,常常会有充许用户输出html款式代码,却克制剧本的运转的需求,以到达丰厚网页款式,克制歹意代码的运转。
固然不克不及用HtmlEncode和HtmlDecode办法,由于如许连基础的html代码会被克制失落。
我在网上搜刮,也没有找到好的办理举措,却是搜集了一些剧本打击的实例:
1.<script>标志中包括的代码
2.<ahref=javascript:...中的代码
3.别的基础控件的on...事务中的代码
4.iframe和frameset中载进别的页面酿成的打击
有了这些材料后,事变就复杂多了,写一个复杂的办法,用正则表达式把以上切合几点的代码交换失落:
publicstringwipeScript(stringhtml)
{
System.Text.RegularExpressions.Regexregex1=newSystem.Text.RegularExpressions.Regex(@"<script[sS]+</script*>",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regexregex2=newSystem.Text.RegularExpressions.Regex(@"href*=*[sS]*script*:",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regexregex3=newSystem.Text.RegularExpressions.Regex(@"on[sS]*=",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regexregex4=newSystem.Text.RegularExpressions.Regex(@"<iframe[sS]+</iframe*>",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
System.Text.RegularExpressions.Regexregex5=newSystem.Text.RegularExpressions.Regex(@"<frameset[sS]+</frameset*>",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
returnhtml;
}
此办法输出大概包括剧本的html代码,前往则就是洁净的代码了。我做过一些复杂的测试,能够满中请求,只是还存在几个疑问:
以上考滤的情形是不是对照完美,还存在别的的剧本打击手腕吗?是不是会有别的更好的办理举措?
在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。 |
|