文章详细内容
联合利用技巧先容之Ajax安全基础发布日期:2014年05月04日   来源:PHP1.CN     点击:47528
摘要: 1.先容 Ajax由于其良好的交互性,在往年很引人注视。Google Suggest 和 Google Maps [ref 1]就是一些Ajax早期的著名利用。现在,企业正在考虑他们如何也能利用Ajax,web开发者在学习它,安全专...
1.先容
Ajax由于其良好的交互性,在往年很引人注视。Google Suggest 和 Google Maps [ref 1]就是一些Ajax早期的著名利用。现在,企业正在考虑他们如何也能利用Ajax,web开发者在学习它,安全专家在想如何使它变得安全,黑客们在思考如何进侵。所有能提高服务器吞吐量,能产生更多的动态页面传输,而且能为终极用户供给更加丰富的web利用的技巧都必定在这个范畴呈现。
Ajax的下一步打算称为”Web 2.0”。这篇文章的目标是先容一些关于现代Ajax web技巧的安全建议。尽管Ajax的利用难于测试,安全专家已经拥有大多数所需要的有关方法和工具。作者将讨论如今的趋势是否需要离别完整的网络更新,应用Ajax也意味着我们将面临一些新的安全标题。我们将从Ajax技巧简要先容开端,接着讨论应用Ajax技巧利用带来的安全冲击。
2.初识Ajax
正常的web利用程序在同步模式下工作,一个web恳求之后,一个响应在表现层引起一些动作。例如,点击链接或者提交按钮向web服务器产生一个带有相应参数的恳求。传统的” click and wait”方法限制了利用程序的交互性。Ajax(Asychronous Javascript and XML)技巧的应用缓解了这个标题。文中,我们将Ajax定义为向web服务器产生异步调用而不引起网页完整更新的方法。这种交互性的通过三种不同的组件实现:客户端脚本语言,XmlHttpRequest (XHR)对象和XML。
让我简短地分辨先容一下这些组件。在恳求响应中,客户端脚本语言被用来初始化服务器调用和程序的存取,以及更新客户浏览器的DOM。客户端广泛应用JavaScript,由于它被着名浏览器广泛的采用。第二个组件是XHR对象,它是最重要的部分。JavaScript这类语言应用XHR对象在场景后面向web服务器发送恳求,应用HTTP作为传输中介。接着是第三个组件,它的应用是必要的:XML是被交换信息的数据格局。
很多站点应用JSON(JavaScript Object Notation)代替XML,由于其更加轻易解析不需要那么多治理的用度。应用JavaScript解析JSON,只需要简略的把它传给eval()函数。另一方面,有人可能应用XPath解析返回的XML。同样的,外面还有很多”Ajax 站点”既不应用XML,也不应用JSON,而是仅仅发送无格局的动态插进到网页的旧HTML碎片。
因此,Ajax不是一个新的技巧商标,而是现存技巧的联合利用,推动了web利用程序高度交互性的发展。实际上,所有这些组件已经呈现好些年了,随Internet Explorer 5.0的宣布而明显起来。开发者创立了Ajax很多的利用,诸如”提示”文本框(象Google Suggest)和主动更新数据列表。所有的XHR恳求仍然是由典范的服务器端框架履行,例如尺度的选择象J2EE,.NET和PHP。下面的Figure 1. 是Ajax利用程序的异步特征图例:
图 1.Ajax异步次序
3. Ajax安全利用
现在我们已经回想了Ajax的基础,让我们讨论一下它的安全含义。在web利用范畴,Ajax本身并没有引进新的安全弱点。这些利用程序面临和经典web利用程序同样的标题。不幸的是,Ajax共通的最佳实现还没有发展起来,这就留下了很多的出错误的余地。其包含安全验证,授权,存取把持和输进检查。[ref 2]。涉及Ajax应用的一些埋伏范畴包含:
·客户端安全把持
有人认为,客户端程序的依附性可能引出来一些已经众所周知的标题。[ref 2]。一种可能性是开发者通过客户端把持损坏安全。如前所述,Ajax的应用需要相当多的脚本语言。如今,Web开发者同时写服务器端和客户真个代码,这也许会吸引面向客户端安全把持履行的开发者。这种方法是非常不可靠的,由于攻击者在测试利用程序弱点时,可以修正运行在他们客户端电脑上的任何代码。安全把持应当完整在服务器上履行或者经常在服务器上升级。
·不断增加的攻击面
第二个挑衅是保护不断增加的攻击面。Ajax不可避免的增加了系统的整体复杂性。在采用Ajax的过程中,开发者也许要编写大批的服务器端页面,每一个页面履行一些全部程序中的小功效(象为了主动完成一个用户的城市和州域,查寻邮政区号)。这些小页面将各自成为黑客的一个附加攻击目标,而为了保证不引进新的安全弱点一个附加的点需要保护起来。这个可以比喻成著名的多重点的安全观点似乎进进一个屋子:保护只有一扇门的屋子难度和保护有十扇门的屋子相比。
·连接用户和服务器之间的间隙
Ajax是开发者通过其缩短终极用户和由面向服务构架接口的间隔的一种方法。[ref 3]增加宽松接洽的基于服务的构架在企业环境中有很多长处,是一种很有盼看的方法。随着更多的基于服务端点的发展,随着Ajax引进向终极用户供给更多的机动的处理的可能,阔别三层尺度模型的可能性增加了。
一般来说,企业内部的很多web服务(与Internet上的全部服务相对)被设计成B2B,因此,设计者和开发者经常没有考虑实际用户的交互性。这个缺乏远见的做法导致了一些坏的设计过程中安全假设。例如,最初的设计者可能假设安全认证,授权和输进检查将由其它中层系统履行。一旦有人答应”外部人士”通过Ajax的应用直接调用这些服务,就引进了一个考虑之外的代理。这类应用的一个实际例子是Microsoft的Atlas[ref 4]和web服务同时应用的一致性程度检查。开发者现在可以编写JavaScript来天生XML输进以及从客户端浏览器中准确调用web服务。在过往这个由代理和服务器完成。
·跨站脚本(XSS)的新盼看
另外一个不幸的事实是攻击者通过利用跨站脚本(XSS)的弱点,能够更有发明性(换句话说,更危险)。[ref 5]黑客过往一般在”单线程”环境下应用XSS漏洞,攻击履行的时候用户的浏览器处于等候状态。这个等候状态供给了一个可能错误履行程序用户的线索。通过Ajax的引进,一个攻击者可以以更加隐秘的方法利用跨站脚本弱点。当你用一个答应Ajax的程序检查你的邮件的时候,恶意代码可能给你所有的朋友发送Email而你的浏览器不会留下任何可见的痕迹。
为懂得决这方面的标题,在把程序放到产品中之前,必需履行足够多的有针对性的安全测试。即使Ajax程序是web利用程序,由于这些利用程序高度交互性的特点,一个组织好的现存的安全测试方法可能是不够的。
4.Ajax如何
测试一个正常web利用程序的时候,一个进侵测试者从footprint利用程序开端。Footprint阶段的目标是捕捉恳求和响应,这样测试者就知道利用程序如何和服务器通信以及它所接收到的响应。这个信息通过本地代理诸如Burp[ref 6]或者Paros[ref 7]记进日志。footprint阶段,必需尽可能做到全面,因此测试者日志向利用程序应用的所有页面发出恳求。
之后,测试者将开端系统的错误注进过程,手动或者应用主动工具来测试从web服务器上传进传出的参数。
转载请注明来源:联合利用技巧先容之Ajax安全基础
标签:PHP ,CSS数据库 ,优化