日期:2014-05-18  浏览次数:20457 次

急:关于过滤脚本代码的问题
我想过滤掉textbox里面提交上来的
1. <script>标记中包含的代码
2. <a href=JavaScript:...中的代码
3. 其它基本控件的 on...事件中的代码
4. iframe 和 frameset 中载入其它页面造成的攻击
这样一些代码,采用了以下这个方法,但是试了不能用,请各位高手指点!!!

 private string wipescript(string html) 

Regex regex1 = new Regex(@"<script[\s\s]+</script *>",System.Text.RegularExpressions.RegexOptions.IgnoreCase); 
Regex regex2 = new Regex(@" href *= *[\s\s]*script *:",System.Text.RegularExpressions.RegexOptions.IgnoreCase); 
Regex regex3 = new Regex(@" on[\s\s]*=",System.Text.RegularExpressions.RegexOptions.IgnoreCase); 
Regex regex4 = new Regex(@"<iframe[\s\s]+</iframe *>",System.Text.RegularExpressions.RegexOptions.IgnoreCase); 
Regex regex5 = new Regex(@"<frameset[\s\s]+</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 
return html; 


调用
string aaa = wipescript(TextBox1.Text);






------解决方案--------------------
这种方法太消极,而且可能不能作到无害化处理。

HttpContext.Current.Server.HtmlEncode(TextBox1.Text);

马上就得了。
------解决方案--------------------
同意HttpContext.Current.Server.HtmlEncode()