OWASP WebGoat---安全测试学习笔记(三)---Ajax安全

Ajax安全(Ajax  Security)



按:

     什么是AJAX?

         1.足球:荷甲阿贾克斯队,懂足球的都知道。

         2.希腊神话:希腊神话里总共有两个AJAX(埃阿斯),都出现在特洛伊战争中。

         3.AJAX(Asynchronous  Javascript  And  Xml):异步JavaScript与XML,实现网页的异步数据处理。

             使用:

                           1.创建对象.   var request    =   new  XMLHttpRequest();

                           2.打开连接.   request.open('get','url',true) ;     //true:异步    false:同步.

                           3.设置回调方法.  request.onreadystatechange = function() {}  ;

                           4.发请求.  request.send(null);



主题:

一、同源策略保护

      同源保护策略是JavaScript安全模型的基础。任意来源的JavaScript代码都只能访问或操作同一来源的数据。“源”由三个部分组成:域(Domain)、

协议(Protocol)、端口(Port)。

       同源策略是客户端脚本重要的安全度量标准。其目的是防止某个文档或脚本从多个不同源装载。当脚本被浏览器运行在沙箱时,它们应该只被允许访问

来自同一站点的资源,而不是那些来自其它站点可能包含有恶意的资源。运用了同源安全策略后,用户就能确保自己正在查看的页面确实来自于正在浏览的域。


例子:






二、基于DOM的跨站点访问

        文档对象模型(DOM)从安全的角度展现了一个有趣的问题。它允许动态修改网页内容,但是这可以被攻击者用来进行恶意代码注入攻击。

XSS是一种恶意代码注入,一般会发生在未经验证的用户的输入直接修改了在客户端的页面内容的情况下。

       HTML DOM 实体中可随时插入新的HTML语句或JavaScript语句,因此很容易被恶意代码利用,从而用来改变页面显示内容或执行恶意代码。 

HTML标记语言中很多标签的特殊属性参数中允许插入JS代码,如:IMG/IFRAME等。

          任务:利用此漏洞将恶意代码注入到DOM,并修改代码来修复这个缺陷。


三、实验:客户端过滤



四、DOM注入

       一些应用程序专门使用AJAX操控和更新在DOM中能够直接使用的JavaScript、DHTML和eval()方法。攻击者可能会利用这一点,

通过拦截答复,注入一些JavaScript命令,实施攻击。 


五、XML注入

       AJAX应用程序使用XML与服务端进行信息交互。但该XML内容能够被非法用户轻易拦截并篡改。


六、JSON注入

       JavaScript Object Notation (JSON)是一种简单的轻量级的数据交换格式,JSON可以以很多形式应用,如:数组,列表,哈希表和

其他数据结构。JSON广泛应用于AJAX和web2.0应用。相比XML,JSON得到程序员的更多的青睐,因为它使用更简单,速度更快。

但是与XML一样容易受到注入攻击,恶意攻击者可以通过在请求响应中注入任意值。


七、静默交易攻击

       对客户端来说,任何一个静默交易攻击,使用单一提交的系统都是有危险的。举例来说,如果一个正常的web应用允许一个简单的

URL提交,一个预设会话攻击将允许攻击者在没有用户授权的情况下完成交易。在Ajax里情况会变得更糟糕:交易是不知不觉的,不会在

页面上给用户反馈,所以注入的攻击脚本可以在用户未授权的情况下从客户端把钱偷走。


八、危险指令使用

       在服务端验证所有用户输入的信息,这是一个不错的做法。如果未验证的用户输入直接通过HTTP响应返回给客户端的话,往往会触发XSS攻击。 

未验证的用户提供的数据结合了JavaScript的eval()调用一起使用。在反射型XSS攻击中,攻击者可以构造带有攻击脚本的URL,将其存储于其他站点,

通过电子邮件,或者其他方式诱骗用户点击,达到XSS的目的。 


九、不安全的客户端存储

         在服务端验证所有的用户输入信息总是不错的做法。客户端进行的任何验证信息都存在被逆向分析的脆弱性。客户端的任何数据都不能被视为机密。

客户端HTML和JavaScrip语句可以对网页内容、形式做修改,如隐藏、控制读写、限制长度等。同样,通过修改网页代码也能解除此类限制。





参考:

        《WEB安全测试》、《WebGoat v2.2技术文档》、《OWASP Testing Guide v3.0》、《AJAX安全技术》。

        《AJAX安全》:http://yylab.tk/187


注:


    

你可能感兴趣的:(Security)