急:关于过滤脚本代码的问题
我想过滤掉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()