一个下划线引发的IE6不能登录的问题03/06/2009
最近的一个项目中,出于安全和一些特殊因素的各种综合性考虑(哈哈,这个句式神似某后现代作家),我将后台的目录进行“非常规”命名,测试后一直使用正常,不过似乎也一直有反映后台登录多次才能成功,可我怎么测试怎么都是没有问题的,而且屡试不爽,根本就没有问题嘛!于是很是怀疑这厮的人品问题,但问题还是不久后的今天在某同事的机器上上演了!“历史与现实总是惊人的相似!”TA使用的IE6,之前也登录该后台多次,均未发现任何问题,今天却是个特殊的日子,TA大声疾呼,登录失败了。这让正在喝水的我,出于极其好奇、本着对上帝负责的态度,飞奔至其电脑前,输入我的超管帐号和密码,不时,居然又回到了登录界面,我确信我的各项输入都是正确的,怎么回事呢?大家都陷入了迷思,在我犀利的目光注视和扫描下(呃,有点儿矛盾),我发现后台的地址/xxxx_xxxx/login.php,居然成了/xxxx%5Fxxxx/login.php,即被urlencode了,哦!问题就出在这里了,因为我们的登录验证会严格判断登录来源,显然xxxx_xxxx不等于xxxx%5Fxxxx,所以,就认为非法用户登录了,被踢!后来,经过测试,我们在后台进行urldecode,以期不再出现%5F的情况,事实上,问题并不是出现在这里,而是IE6,该死的IE6会自作聪明的进行编码,即将下划线转成%5F,而且经多次测试,还是随机的转化的,所以就让管理员时而能正常登录,时而又耍小脾气,不让人登录,这显然是一个糟糕的事情,发现了问题之所在以后,火速改了后台地址,问题得以解决。
回头看看本文,发现多处使用了感叹号,可见本人对于这个BUG的无语程度,绝非莫名。。。




