2010-06-15 40 views
3

全部,关于Ajax黑客的问题

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

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

    $.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); 
        } 
    }); 
    

我的问题是没有 “URL” 属性在Ajax请求上面占据绝对路径?我知道它需要相对路径。另外,是否有可能通过发送此类请求来破坏任何网站?

感谢

回答

5

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

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

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

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

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

这取决于网站的写法。您应该对通过JavaScript访问设计的URI进行相同的安全检查,这些设计用于访问浏览器的直接请求。

+0

唯一的检查我在地方每个控制器的动作是,它会检查一个Ajax请求。如果不是将用户重定向..我的网站是90%阿贾克斯驱动..我使用的代码是: 如果 {// 做一些 } (空($ _ SERVER [ 'HTTP_X_REQUESTED_WITH'])&&用strtolower($ _ SERVER [ 'HTTP_X_REQUESTED_WITH'])== 'XMLHttpRequest的'!) else { //将用户重定向到主页 } – Jake 2010-06-15 19:15:54

+0

我不知道我是否受到攻击者的攻击保护..是否有任何资源用于furt她对此有何看法? – Jake 2010-06-15 19:17:57

+0

您需要防止只是向您的AJAX处理程序发出任意请求的人。一种方法是将cookie设置为随机值。散列该cookie值并将其附加到您的AJAX请求:“https:// marketsite/getinfo/getstuff?verifier = [hashed_value]”。 AJAX请求将发送cookie和散列值,并且您可以验证请求是否为真。 – dana 2010-06-15 19:22:24

1

除非你的客户修改其浏览器安全设置,AJAX请求被限制到它们的起源网站的相对路径。当然,黑客可以改变Javascript来指向他想要的任何URL。

0

大卫的回答是非常有益的,我需要提几个信息 1 - Zend框架具有功能检测AJAX请求核查该Detecting AJAX Requests

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

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

希望我帮你:)