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

2016-01-29 17:32 8 1 收藏

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

【 tulaoshi.com - ASP 】

    我们在使用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

来源:http://www.tulaoshi.com/n/20160129/1501801.html

延伸阅读
标签: ASP
  看了一些IP限制的函数,觉得太复杂。所以,试着写了一个,比较简单。请网友参考指教。谢谢!~ 代码拷贝框 <%'获取访问者的地址ip=Request.ServerVariables("REMOTE_ADDR") '允许的IP地址段为10.0.0.0~10.68.63.255allowip1="10.0.0.0"allowip2="10.68.10.71"response.write checkip(ip,allowip1,allowip2)function checkip(ip,a...
标签: ASP
  我现在在做ASP的安装程序,这样可以方便用户的使用。我使用的InstallShield版本是InstallShield Professional—Standard Edition6.3。   我没有用过这个东东,问题如下: 问题一   通过Project Wizard-generated script 做好了COPY打包工作。可是6.3版本的好象不支持主体Program...Endprogram,因为我看COPY打包...
标签: ASP
  下面是建立WEB文件和设置的例子需VBS文件(有虚拟目录设置,但没有权限设置). //////////////////////////////////////////////////////////////////////////////// // // IIIIIII SSSSSS // II SS InstallShield (R) // II SSSSSS (c) 1996-1999, InstallShield Software Corporation // II SS (c) 1990-1996, InstallShield Corpor...
标签: ASP
  //////////////////////////////////////////////////////////////////////////////// //                                      &...
标签: ASP
  '共有两个页面index.htm是首页.程序比较简单,主要是用了ASP里的文件操作对象。 <!--index.htm------------------------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" <html <head <titleUntitl...

经验教程

170

收藏

42
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部