2010-06-15 95 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代碼和許多其他變體。

希望我幫你:)