Asp教程

通过asp实例结合结合ACCESS,MSSQL来更好的深入Asp学习 - 爬坡者

« sql-server2000提示挂起的文件操作SQL查询效率-100w数据查询只要1秒 »

过滤掉危险的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

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710

Copyright 2007-2008 papozhe.com [asp教程] All Rights Reserved.
浙ICP备07030537号
免责申明:所有文章除特别声明,均来自网上,主要为学习用!内容仅供参考,版权归原作者。如侵犯您利益,请来信告知.
Email:papozhe$Gmail.com QQ:76336503