过滤掉危险的HTML标记:script,ifame,object

对于提交的HTML代码,如果含有script,iframe,frameset等标记,对网站本身会构成一定的潜在威胁,使用下面的函数可以过滤掉指定的HTML标记。
注:
1.对于单标记(如:<hr />,<br />等),因其对网站本身不会构成威胁,故未将单标记纳过过滤范围。(注:呵呵,之前没考虑到img也可能存在风险,过滤单标记的函数请见文章末尾的修改版)
2.参数strHTML:待过滤处理的HTML代码内容
3.参数strTAGs:待过滤掉的HTML标记名,可写多个标记名,各标记名以英文逗号( , )为间隔
<%
'Wrtten by i{At}CnLei.Com
Function lFilterBadHTML(byval strHTML,byval strTAGs)
Dim objRegExp,strOutput
Dim arrTAG,i
arrTAG=Split(strTAGs,",")
Set objRegExp = New Regexp
strOutput=strHTML
objRegExp.IgnoreCase = True
objRegExp.Global = True
For i=0 to UBound(arrTAG)
objRegExp.Pattern = "<"&arrTAG(i)&"[\s\S]+</"&arrTAG(i)&"*>"
strOutput = objRegExp.Replace(strOutput, "")
Next
Set objRegExp = Nothing
lFilterBadHTML = strOutput
End Function

'Example
Dim sPageCont
sPageCont= "...网页正文内容..."
sPageCont=lFilterBadHTML(sPageCont,"script,iframe,object,table")
%>

2007年2月4日修改如下:
--------------------------------------------------------------------
由于img属于单标记,而跨站引用的图片也可能存在危险,对此函数作了下改进,增加第三个参数nType,用来区分过滤标签的类型(单标签还是双标签),当nType=1时,可以过滤单标记(如果:img,hr等等)
Function lFilterBadHTML(byval strHTML,byval strTAGs,byval nType)
Dim objRegExp,strOutput
Dim arrTAG,i
arrTAG=Split(strTAGs,",")
Set objRegExp = New Regexp
strOutput=strHTML
objRegExp.IgnoreCase = True
objRegExp.Global = True
If nType<>1 Then
For i=0 to UBound(arrTAG)
objRegExp.Pattern = "<"&arrTAG(i)&"[\s\S]+</"&arrTAG(i)&"*>"
strOutput = objRegExp.Replace(strOutput, "")
Next
Else
For i=0 to UBound(arrTAG)
objRegExp.Pattern = "<"&arrTAG(i)&"[^>]+>"
strOutput = objRegExp.Replace(strOutput, "")
Next
End If
Set objRegExp = Nothing
lFilterBadHTML = strOutput
End Function