三、 "恶意"暗示
公平地说,上面引用的大多数的"恶意"应用软件都能被合理地加以处理,即使在 XMLHttpRequest技术出现以前。的确,request对象是一种相对于以前的IFrame技术更为优雅的成功提交表单数据的方法。但是, XMLHttpRequest以一种更为自然的方式工作,这种方式简直可以能使客户端与服务器端的交互差别逐渐消失。
具有讽刺意味的是,直到最近,随着Firefox Web浏览器的不断流行,才使得较多用户真正了解到可以由Web客户端储存和控制的信息的深度和广度。随着广泛采用象Greasemonkey,Web开发者扩展以及cookie编辑器这样的工具,人们比以往任何时候更为确信,如果问题发生在客户端,那么责任一般应归咎于该用户。
但是现在,即使象我们这样狂妄的人也不再只是右击鼠标,看一下源代码,然后就能确信正在发生的事情了。请考虑下面的OnReadyStateChange JavaScript语句,运行它是为了响应一个XMLHttpRequest:
xmlReq.onreadystatechange =
{
if( xmlReq.readyState == 4 )
{
eval( xmlReq.responseText );
}
}
上面的代码执行包含在来自于XMLHttpRequest的响应中的JavaScript代码。换句话说,有可能出现这种情况:即使一个页面加载完毕,也有可能在后台再进行添加或修改JavaScript函数和代码!因此就算你观察该页面代码的源代码-它可能发送了键击或鼠标移动事件到Web服务器,你也无法确信你所见的代码是当前执行的唯一代码。把这些特征与一些令人胆战心惊的困惑结合起来,那么你可以看到,恶意目的与XMLHttpRequest对象相结合,怎么不能实现Web客户的信息窃取!
四、 还不确信?
你还不感到害怕并因此而愤怒吗?还不准备愤起并删去你的浏览器中的XMLHttpRequest代码吗?那么,好,也许本文强势的措词论证会吓倒了你;那么在游戏"Fonzie寻宝记" (The Search For 's Treasure。译者注:在GOOGLE中输入这几个关键词,你肯定能找到这个在线文本游戏,本人没有深入试验。难道这个小东西那么可爱的面孔下竟然埋伏着上面所述的那么恐怖的……)中-你能够救出Fonzie吗?
通过使用很有艺术的命令行接口,穿过充满文本的门厅寻找丢失的 Arthur 'Fonzie' Fonzarelli宝藏。祝你幸运,但是请记住…虽然它看上去就象无危害的客户交互-你每作四次移动,该游戏通过XMLHttpRequest对象发送一个请求到服务器上并保存你的移动。永远记住:不要做一个印刷工(Don't make a typo);不要尝试一些愚蠢的东西如"eat jukebox";不要在游戏中输入一个用户名和口令字;否则……
