2010-11-16 29 views
1

讓我們想象一下,站點A使用指向服務器B的標準腳本標記嵌入JavaScript文件。下一站點A向服務器B上的資源發出JSONP或AJAX請求。是否有服務器B明確知道特定的JSONP請求起源於站點A上的用戶,而不是其他站點上的用戶欺騙其HTTP REFERRER。有沒有一種方法可以安全地知道託管AJAX調用的始發服務器?

我認爲有可能的領域的唯一原因是因爲網站A開始與它的服務器B的javascript的嵌入溝通。從某種意義上講,這種原始通信不能作爲安全握手,使後續的通話安全通過。但是因爲握手是通過不安全的手段完成的,所以並不妨礙它作爲安全握手。

有關如何完成此任務的任何想法?我能想到的每個解決方案都被一個AJAX調用的每個元素都僞造的概念所打破。

我讀http://www.codinghorror.com/blog/2008/10/preventing-csrf-and-xsrf-attacks.htmlDetecting Ajax in PHP and making sure request was from my own website但據我所知,他們專注於確保用戶的準確性而不是引用者的準確性。

回答

1

如果您希望將https服務器配置爲需要mutual authentication,則可以通過https使用Ajax。

0

您可以使用Hash_chain來驗證原點。

在頁面加載時,從隨機產生X次散列並將最後一個散列與初始請求(腳本標籤)一起發送,例如散列[100]。每個下一個請求都使用Hash [Last-1]發送。

在服務器B上檢查散列(resieved_hash)是否與最後一個相同。

+0

這意味着客戶端將負責創建哈希值。由於我沒有控制客戶端(只有它是JS),我不需要將加密函數存儲在客戶端,因此消除了所有安全優勢。另外,它是如何幫助我驗證源自網頁的真實性,因爲握手是通過AJAX發生的?誤解問題首先是 – Nucleon 2010-11-16 16:42:45

+0

。沒有A站點的控制,沒有安全的方式。您可以在請求中儘量減少代碼和隨機名稱。 – Lauri 2010-11-22 09:26:18

相關問題