2009-01-26 31 views
3

我們有一個網頁,我們通過iFrame向合作伙伴公司提供。 iFrame包含幾個javascript文件,它們向我們的服務器發送ajax請求以獲取數據。 iFrame本身需要一個API密鑰,該密鑰是合作伙伴的域名。這可以防止iFrame安裝在未註冊的域上。但是,從註冊站點簡單複製iFrame的內容和JavaScript文件並將它們託管在非註冊站點上將非常容易。如何通過AJAX請求驗證用戶?

理想情況下,我們希望使用API​​密鑰來限制Ajax請求,並阻止我們的服務器爲非註冊網站提供請求的數據。但是,似乎沒有爲Ajax請求設置HTTP_REFERER服務器變量。我們如何知道請求來自哪個網站?可能嗎?如果不是,我們如何防止未經授權的訪問?

回答

0

當請求iframe時,您可以在您的服務器上生成唯一的ID,然後將其設置爲客戶端上的cookie。每個AJAX請求都應該包含該cookie。只在最後一個小時左右在身份證的附近。

您永遠不能依賴HTTP_REFERER,因爲某些代理服務器和防火牆會將其剝離以保護用戶的隱私。

0

挑戰在於iframe被授權到特定的域,所以我的API密鑰與此綁定。我遵循以下教程來生成我的API密鑰。

https://ajax.dev.java.net/ajax/api-keys

你認爲依靠HTTP_REFERER變量將阻止用戶訪問的iframe? Sun聲稱Google使用此方法進行Google Maps API身份驗證。

一旦API密鑰已被認證,那麼cookie方法應該做的伎倆,我認爲。謝謝!

1

依靠HTTP_REFERER是不是要走的路。您希望客戶的網站使用API​​通過安全鏈接聯繫您的網站,並獲取一個臨時會話字符串,然後將其用作IFRAME的源網址的一部分,這就是Google如何做到的(而不是引用者。 )

使IFRAME的URL在有限時間內有效,之後您將顯示一條關於返回客戶端頁面的好消息以重新開始。