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

我们在使用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)," ",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语句的时候就会发生错误,因为大多数据库系统都是把单引号当作分割符号的。

  (以上ASP程序在WinNT4.0英文版SP5,IIS4.0,MS SQL Server7.0SP2运行通过)

时间: 2024-10-08 22:23:12

使用ASP程序对“HTML炸弹”进行屏蔽的相关文章

ASP程序发送信件的几种方法比较

比较|程序 一.Jmail3以及以前的版本使用jmail.smtpmail发信,具体代码如下: <%Set jmail = Server.CreateObject("JMAIL.SMTPMail") '创建一个JMAIL对象jmail.silent = true 'JMAIL不会抛出例外错误,返回的值为FALSE跟TRUEjmail.logging = true '启用使用日志jmail.Charset = "GB2312" '邮件文字的代码为简体中文jmai

浅谈ASP程序的编写和调试:给初学者

程序|初学 很多朋友觉得ASP不是很好学,我觉得其实有了一定的编程基础,再加上那么一点点技巧,入门是不难的(不过要做好也不是很容易,要很多的相关知识--什么Sql Server数据库语言啦,数据结构啦(这些都是在优化Asp的算法时候要熟悉的). 在这只和大家谈谈我个人是怎书写和调试ASP的,希望能给大有一点帮助-- ASP脚本的书写: 一.注意区分清楚html语法和VBScript语法.因为ASP是混合使用Html语法和VBScript语法的(当然,我全部写成VBScript语法也可以,不过那样

ASP程序漏洞解析及黑客入侵防范方法

程序 如何更好的达到防范黑客攻击,本人提一下个人意见!第一,免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码.如果在细节上注意防范,那样你站点的安全性就大大的提高了.即使出现了SQL Injection这样的漏洞,攻击者也不可能马上拿下你的站点. 由于ASP的方便易用,越来越多的网站后台程序都使用ASP脚本语言.但是, 由于ASP本身存在一些安全漏洞,稍不小心就会给黑客提供可乘之机.事实上,安全不仅是网管的事,编程人员也必须在某些安全细节上注意,养成良好的安全习惯,否则会

最优化ASP程序性能

 Active Server Pages可以让动态页面很快地执行,但是,在代码中和数据库的连接上加入一些技巧,就能让程序更快地执行.这是一篇关于如何精制脚本程序以及ASP特征来达到最大速度的文章.任何在用户点击按钮到在屏幕上出现结果间延迟都会让用户茫然,对于一个商业站点,这就意味着潜在的用户损失. ASP脚本的尺寸 我们也许不能控制用户的带宽,但是通过优化ASP站点,我们的确能够使应用达到最佳性能.许多潜在的性能收获可以通过系统调整,而不是改变代码. 因素 首先,有哪些因素可能影响ASP程序的性

浅谈Asp程序的编写和调试——给初学者

程序|初学     很多朋友觉得Asp不是很好学,我觉得其实有了一定的编程基础,再加上那么一点点技巧,入门是不难的(不过要做好也不是很容易,要很多的相关知识--什么Sql Server数据库语言啦,数据结构啦(这些都是在优化Asp的算法时候要熟悉的).    在这只和大家谈谈我个人是怎书写和调试Asp的,希望能给大有一点帮助--Asp脚本的书写: 一.注意区分清楚html语法和VBScript语法.因为Asp是混合使用Html语法和VBScript语法的(当然,我全部写成VBScript语法也可

最优化ASP程序性能(转)

程序|性能|优化 Active Server Pages可以让动态页面很快地执行,但是,在代码中和数据库的连接上加入一些技巧,就能让程序更快地执行.这是一篇关于如何精制脚本程序以及ASP特征来达到最大速度的文章.任何在用户点击按钮到在屏幕上出现结果间延迟都会让用户茫然,对于一个商业站点,这就意味着潜在的用户损失. ASP脚本的尺寸 我们也许不能控制用户的带宽,但是通过优化ASP站点,我们的确能够使应用达到最佳性能.许多潜在的性能收获可以通过系统调整,而不是改变代码. 因素 首先,有哪些因素可能影

传统ASP程序开发者使用IIS7小提示

至今还有这么多传统ASP (Classic ASP) 应用程序和开发者,真让我感到惊讶.我还记得96.97年的时候IIS3问世,我体验了最原始的ASP程序,并为它与ColdFusion相比表现出的惊 人的可编程性赞叹不已.使用传统ASP我建立了许多应用, 它将成为我记忆中永不褪色的闪光点:) 使用传统ASP编程的开发人员应该对IIS7的几个小变化引起注意. ASP缺省不安装 重要的事先来! 如果从XP迁移到Vista / Longhorn Server, 您也许会得到这个错误: --------

ASP程序中调用函数Now()异常的问题

新上的一台服务器出现了一个现象:ASP程序中,调用函数Now(),显示的时间总是形如"2009-07-12 上午 08:12:56 "这样的,总显示"上午"和"下午",解决过程及最终解决方法如下: 这么显示,一般都是因为服务器就是如此设置的,先查看时间格式:直接双击任务栏中时间,在弹出的"时间和日期"中果然显示了上午下午这样的字样,那就进入下一步设置: 打开控制面板,选择"区域和语言选项",在"区

Dreamweaver MX 2004做ASP程序

dreamweaver|程序 最近论坛和QQ里总有人问,"我要学习ASP但是不知道从哪里学起?有没有初级入门的教程?",其实本站中已经有好多关于ASP的教程了而且还有相关的书籍提供大家下载,可能是没看到的原因吧?从今天开始我编写个教程教你一步一步学习ASP,在这里我们使用可视话的编程工具Dreamweaver MX 2004来实现开发ASP程序,在以后我将陆续给大家介绍如何开发ASP.NET.PHP,JSP.本教程写得比较简单,上手应该比较容易,大家跟着一步一步做就行了.我的操作系统是Win X