关于Ajax Hacking的问题

时间:2010-06-15 19:01:46

标签: php ajax security zend-framework jquery-ui

所有

我有一个用Zend Framework和MVC编写的PHP网站。大多数控制器操作检查请求是否是Ajax请求,否则他们将用户重定向到主页。我正在考虑打破该网站的各种方法。我正在考虑以下情况:

  1. 用户在其本地计算机上创建自己的PHP项目。
  2. 用户将JQuery ajax发布请求写入我网站上的某个控制器,并尝试发布恶意信息。 例如:

    $.ajax({
        type: 'POST',
        url: "https://marketsite/getinfo/getstuff",
        cache: false,
        dataType: "html",
        success: function(html_response){
            alert(html_response);
        },
        error: function(xhr,ajaxOptions,errorThrown){
            alert(errorThrown);
        }
    });
    
  3. 我的问题是上面的ajax请求中的“url”属性是否采用绝对路径?我知道这需要相对路径。此外,是否可以通过发送此类请求来破坏任何网站?

    由于

3 个答案:

答案 0 :(得分:5)

  

我的问题是上面的ajax请求中的“url”属性是否采用绝对路径?

Same Origin Policy阻止JavaScript发出请求并读取响应,除非它是相同的主机,端口和协议。

这并不能阻止攻击者发出他们喜欢的任何HTTP请求(手动构建一个看起来与通过JS制作的相同)并且它不会阻止攻击者欺骗用户制作任何HTTP请求请求攻击者喜欢(它确实阻止攻击者获得对该请求的响应)。

攻击者无需使用PHP或任何其他服务器端语言来执行此操作。

  

此外,是否可以通过发送此类请求来破坏任何网站?

这取决于网站的编写方式。您应该对设计用于通过JavaScript访问的URI应用相同的安全检查,这些URI是专为访问而设计的,具有来自浏览器的直接请求。

答案 1 :(得分:1)

除非您的客户修改其浏览器安全设置,否则AJAX请求仅限于其原始网站的相对路径。当然,黑客可以改变Javascript以指向他想要的任何URL。

答案 2 :(得分:0)

大卫的回答非常有帮助,我需要提一下几个信息 1-Zend框架具有检测ajax请求检查此Detecting AJAX Requests

的功能

2 - 那里有一个开源项目(PHP IDS),非常方便,它允许你:

  

目前,PHPIDS会检测各种XSS,SQL注入,标头注入,目录遍历,RFE / LFI,DoS和LDAP攻击。通过特殊的转换算法,PHPIDS甚至可以检测到严重混淆的攻击 - 这包括几个字符集,如UTF-7,所有形式的实体 - 例如JavaScript Unicode,十进制和十六进制实体以及注释混淆,通过串联进行混淆, shell代码和许多其他变体。

希望我能帮到你:)