2012-02-29 52 views
3

我對跨產品政策有疑問。是否可以將API限制爲僅限一個Web界面/應用程序?

我有一個Web應用程序,獲取數據,通常以JSON格式,通過AJAX。

當Web應用程序初始化,獨特的「關鍵」或「令牌」從服務器通過AJAX創建併發送到客戶端,作爲一個平均值來識別它。每次ajax調用都會發送令牌用於驗證目的。如果在兩個小時內未驗證,則PHP腳本將其刪除,並且用戶需要再次對其進行身份驗證。

如果用戶發送另一個Ajax呼叫(即,如果有活動與關聯的令牌),令牌將其過期2小時。

每次調用,我驗證令牌,然後處理請求。一切運作良好,但我的問題是安全導向。由於令牌存儲在客戶端(非常粗糙,如window.token = 'YTM0NZomIzI2OTsmIzM0NTueYQ==';),惡意用戶不可能檢查代碼,複製包括令牌在內的JavaScript,並創建另一個可訪問相同令牌的應用程序數據?

+2

簡而言之:是的。 :) – deceze 2012-02-29 00:55:53

+2

是的,你無能爲力。 – SLaks 2012-02-29 00:56:13

+0

我不知道PHP,但是它不包含會話功能嗎? – 2012-02-29 00:57:40

回答

3

Since the token is stored client-side (very crudely, like window.token = 'YTM0NZomIzI2OTsmIzM0NTueYQ==';), won't it be possible for malicious users to inspect the code, copy the JavaScript including the token, and create another app that will access the same data?

是的。

可能更令您感到困擾的是:即使您的令牌存儲在客戶端甚至都無關緊要 - 他們甚至可以使用您公開給用戶的相同API登錄。登錄(如果你覺得你沒有登錄API,因爲它是一個表單提交或類似的東西,你在愚弄自己 - 表單POST是一樣多的「API」爲別的......和可以很容易地複製到其他地方)。

跨域的東西已經很少做任何事情 - 因爲這是一個瀏覽器的客戶端限制 - 用於用戶的保護 - 不是你的。我可以通過桌面或服務器進行任何HTTP請求。我甚至可以設置一項服務,該服務允許我將所有對我的服務提出的請求代理到您的服務中......所以瀏覽器中的跨域安全性對您沒有任何幫助。

+0

神聖安全蝙蝠俠!謝謝你的確切答案。 – 2012-02-29 02:10:15

相關問題