大家好!各位是否知道聊天室里的踢人问题.你莫名其妙的离线了!真的很讨厌,如果是由于不遵守聊天规则那还可以理解,但是...好了!不说那么多了!先看看聊天室的一个漏洞!
--------------------------------------------------------------------------------
1 聊天室踢人的漏洞
各种聊天室肯定都有退出的按钮(你不愿意聊了,可以正常离开吗!!),当然你直接关闭窗口也可以啊!但那是异常离开!程序设计者不会提倡这种离开方法的!所以都会提供一个离开按钮的!下面看看这个退出表单的程序代码:
<FORM name='leave' ACTION='http://xxx.xxx.xxx.xx/leave' target='_parent' METHOD=POST>
<INPUT TYPE=HIDDEN NAME='name' VALUE='guest59258'>
<INPUT TYPE=HIDDEN NAME='pass' VALUE='956285295'>
<INPUT TYPE=HIDDEN NAME='room' value='yyyyyyyy'>
<INPUT TYPE=submit name=submit Value='离开' >
</form>
其中的红色部分为发送请求的人(也就是按离开按钮的人)的名称代号!
如果我们其中的 VALUE=改为另外一个代码,比如:VALUE='guest59595',然后再按离开按钮的话,那就相当于是 guest59595 按的一样. 如果处理程序不能很好的判断发送请求的正确性,那guest59595就真的离开了!这就是踢人得原理!
其它的象穿墙书等同样利用上面的方法来实现的..
--------------------------------------------------------------------------------
2 防御方法
方法非常简单!比如:
(1) 判断上面标但中那个蓝色的密码项是否正确.
每个聊天用户都有一个用户名,但一般都有一个随机产生的密码!如果我们在cgi程序里判断密码项是否正确,就就可以简单的解决了!什么???你要连密码项都要改,可是,你在聊天室里一般只能看到对方的名字,不可能看到它的密码的!!我想你不会用穷举法尝试把!!
(2)判断信息的IP号
聊天者一般是通过拨号上网的,其IP地址号室随机分配的,而且每个拨号机器只能有一个IP号,所以聊天室程序在其进入时应该保存聊天者的IP号,然后在每次处理每个请求时判断名称和IP号是否是同一个人,这样就能比较安全的达到防止胡乱发言和踢人的目的了.
(3)如果对方能够知道你的IP地址,而且用IP欺骗程序来攻击你,那他可真是一个高高手了,被这样的高手攻击,你应该感到荣幸.是不是有点拿大炮打蚊子的感觉!他才没有兴趣跟你浪费时间呢??一定是参加"抗日战争"去了.不必担心的.哈哈哈哈!!