当前位置: 首页 > 图文教程 > 网络编程 > ASP > 使用ASP程序对“HTML炸弹”进行屏蔽

ASP
asp实现取得数组中的最大值的代码
asp 将日期格式化为需要的格式
asp 下产生任意位数随机密码的代码
asp下返回以千分位显示数字格式化的数值
asp重定向页面的方法总结
asp下去除数组中重复的项的方法
asp下实现 重新排序数字数组的代码
asp 验证输入网址是否有效并可以访问 与正则验证输入网址
asp验证Ip格式的函数
asp实现生成由数字,大写字母,小写字母指定位数的随机数
asp 格式化sql中的like字符串
asp 实现显示所有的服务器变量值的函数
asp 取得用户真实IP,对代理地址仍然有效的函数
asp 通用数据库连接过程函数
asp 字符串截取函数
asp下实现格式化文件大小以MB显示的函数
asp 下用正则表达式检测邮箱格式的函数
asp 实现检测字符串是否为纯字母和数字组合的函数
asp代码实现检测组件是否安装的函数
asp通过JMAIL实现通用发送函数

使用ASP程序对“HTML炸弹”进行屏蔽


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 214 ::
收藏到网摘: n/a

    我们在使用ASP来编写论坛或者BBS程序的时候,经常会遇到这样的问题,当网友在我的论坛或者BBS上面发表的文章带有HTML代码的时候,如何才能正常的显示这篇带有HTML代码的文章呢?如果在向数据库保存数据的时候或者向浏览器输出显示内容的时候不做任何处理,就会发生麻烦,比如,我发表的一篇文章带有如下的代码:

<script language="javascript">

for(i=1;i<=10000;i++)

{

  parent.moveBy(20,20);parent.moveBy(-20,-20)

}

</script>

  当其他的网友阅读这篇文章的时候,他就会发现他的浏览器在不停的跳动,整个屏幕一片混乱,这也就是俗称的“HTML炸弹”。所以为了更好服务于到我们论坛贴文章和阅读文章的网友,我们就要屏蔽类似的“HTML炸弹”。屏蔽“HTML炸弹”大致有两种途径:

  第一种是在将文章保存到数据库之前就使用ASP程序过滤掉文章中的“HTML炸弹”。方法是:将文章中所有的英文半角的字符“<”以及“>”分别替换成为英文全角的字符“<”以及“>”,然后再保存到数据库中。代码如下:

'*******************************

'保存文章内容

'参数:Ftitle    文章标题

'      Fcontent 文章内容

'*******************************

Function SaveDoc(Ftitle,Fcontent)

'..................

'这里是联接数据库的代码

'....................



'过滤掉HTML炸弹以及单引号

Ftitle =replace(Ftitle,"'","''",1)

Ftitle =replace(Ftitle,"<","<",1)

Ftitle =replace(Ftitle,">",">",1)

Fcontent =replace(Fcontent,"'","''",1)

Fcontent =replace(Fcontent,"<","<",1)

Fcontent =replace(Fcontent,">",">",1)



'下面正常保存到相应的数据库中就行了

'...................

End Function

  第二种方法是:在把文章保存到数据库之前不做任何处理,只是在显示到浏览器的时候,使用ASP对从数据库中取出的数据作相应的处理,以便正常显示。因为文章的内容有可能要显示到两种地方,一个是简单的阅读,需要显示到Table;另外就是要回复文章,就要显示到TextArea框里面,所以需要的两份代码如下:

'*****************************

'阅读文章内容,显示在Table中

'参数content就是从数据库中提取出来的文章内容

'*****************************

Function ShowDocToRead(content)

  dim temp

   temp=""

'如果文章内容为空,就退出

  if trim(content)="" then

     ShowDocToRead=""

     exit function

   end if



'过滤掉HTML炸弹

   temp=replace(content,chr(13)&chr(10),"<br>",1)

   temp=replace(temp,chr(32),"&nbsp;",1)

   temp =replace(temp,"<","<",1)

   temp =replace(temp,">",">",1)

   ShowDocToRead=temp

End function



'**********************************

'阅读文章内容,显示在TextArea中,於用

'回覆.

'

'***********************************

Function ShowDocToWrite(content,author)

dim temp



temp=""

if trim(content)=""then

ShowDocToWrite=""

exit function

end if

content="【" & author & "在大作中谈到:】" & chr(13)&chr(10) & content temp=">" & replace(content,chr(10),chr(10)&">",1)

temp =replace(temp,"<","<",1)

temp =replace(temp,">",">",1)



ShowDocToWrite=temp

End Function



  这样,通过这两种方法,即便是文章内容包含HTML代码,或者Script语句,我们的论坛或者BBS也可以正常将文章内容显示出来了,可以有效的防止个别人对论坛或者BBS的恶意攻击,使我们的论坛或者BBS更加安全和强壮。

  另一个需要注意的地方是,文章的内容在保存到数据库之前,应当过滤掉单引号,否则在执行SQL语句的时候就会发生错误,因为大多数据库系统都是把单引号当作分割符号的。

  (以上A