回首页

后一页
前一页
“用ASP建造聊天室”的一点补充

云南希地集团
段 炼

---- 阅读《计算机世界》26期《用ASP建造聊天室》一文后,本人也依样制作了一聊天室。试用后感到,有必要对聊天室的建造做一点补充说明,以使该应用更趋完善。

---- 就原文提供的例程,我们先看下面的情况:

---- 如果聊天室的某客户在浏览器发言框中填写了下述之一内容:


1、< meta http-equiv="refresh" content="0;
url=http://www.somesite.com" >;
2、< img src="http://www.somesite.com/someImage.jpg" >;
3、if x1< x2 then x1++;

 

---- 提交至服务器,服务器程序又将字符串作为HTML文本的一部分写到每一用户的浏览器,其结果是:

  1. 聊天室每一用户端浏览器(解释该HTML标签后)都将自动转向一新的网页 http://www.somesite.com
  2. 聊天室每一用户端浏览器(解释该HTML标签后)都会显示一未知网址的某一张图片;
  3. 浏览器认为"< "符号后内容为未知HTML标签,因此,“if x1 ”后面的内容将不可见。

 

---- 因此,在应用的实际实现中,有必要对用户发言中可能含有的“< ”符号作出处理。一个较为简单的办法是编写一段JavaScript程序,将“< ”,变为字符串“<”。(考虑到用户较多时服务器的运行负荷,将该脚本程序放在浏览器端运行)。

---- 即在《用ASP建造聊天室》原文例程default.asp < head > < /head >部分加入:


 < script language="JavaScript" >
< !----
function check_txttalk(){
str1=document.aspform.txttalk.value;
str3=""
position=str1.indexOf("< ");
if (position ==-1 ) return true;
while (position != -1) {
str2=str1.substring(0,position)+"<";
str1=str1.substring(1+position,str1.length);
position=str1.indexOf("< ");
str3=str3+str2;
}
document.aspform.txttalk.value=str3+str1;
return true;
}
//--- >
< /script >

并将原文< form action="default.asp" method=post name="aspform" > 改为:< form action="default.asp" method=post name="aspform" onSubmit="return check_txttalk()" >。

 

---- 即便如此,考虑到有恶意的访问者仍可能对浏览器端网页进行分析修改后对聊天室进行攻击,还应将原文中mchars(mcounter)=session("ssname") & ":" & request("txttalk") 更改为:


   talk=request("txttalk")
if Instr(talk,"< ") <  >0 then
talk="对不起,本聊天室不能使用HTML标签"
mchars(mcounter)=session("ssname") & ":"  & talk

---- 以提高聊天室安全性(对用户“姓名”也应做相同处理)。

后一页
前一页

回首页