|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
我们在使用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运行通过) 返回类别: 教程 上一教程: ASP常见问题(新手) 下一教程: 利用ASP打造网站论坛DIY -4 您可以阅读与"使用ASP程序对“HTML炸弹”进行屏蔽"相关的教程: · 使用INSTALLSHIELD制作ASP安装程序(4) · 使用ASP生成HTML文件的实例代码 · 如何使用JAVASCRIPT来写ASP程序 · ASP中FSO的神奇功能 - 使用FSO进行搜索 · ASP系列讲座(十五)使用 HTML 表格 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |