2

我們正在構建使用基於位置的定價的服務。用戶可以通過各種服務器端算法確定地址並查看他所在區域的價格。然後可以根據這些價格訂購商品。防止篡改客戶端地理編碼結果

我想知道在這種情況下是否有一種方法可以使用客戶端地理編碼(以避免觸及Google Maps API使用限制)用戶輸入他的地址,瀏覽器使用JS庫提取地理編碼結果,並將其包含在表單提交中。問題在於用戶可能會篡改表單提交,並且可能會將訂單下達到適用於不同座標集的價格的地址。

我想聽聽你對我如何保證這一點的建議。例如,如果地理代碼結果可以以某種方式進行簽名以驗證其未被篡改,那將會令人驚歎。

回答

2

如果您希望客戶端計算機執行請求,您將在安全方面受到一定限制,因爲它們全都是javascript,惡意用戶可以檢查腳本並查看您的身份這樣做。因此,即使試圖「確保」它也會成功。

我唯一的建議就是在用戶提交結果時做一個「最終驗證」服務器端。這應該會減少服務器端的API命中率,但會使安全性保持100%有效。

+0

是的,如果我按照訂單進行最終驗證,那麼我認爲它會成爲太多人想買東西的奢侈品問題:) – Nikolaj 2010-09-16 14:02:12

+0

賓果!您可以從本地用戶存儲中獲益,但您自己可以驗證它的安全性。 – 2010-09-16 14:27:35

5

Nevertrustdatacreatedclientside。任何你可以做的客戶端,他們可以。

+0

如果Google Maps API簽名的結果是一個解決方案。我意識到篡改問題,這就是爲什麼我問這個問題。 – Nikolaj 2010-09-16 13:59:08

+0

@Nikolaj:但他們沒有。 – Piskvor 2010-09-16 14:22:33

+0

Google是否簽署結果無關緊要。欺詐客戶會篡改Google提供的數據,Google將返回一個已簽名但受污染的結果。 – MSalters 2010-11-19 15:23:43

1

如果數據存儲在用戶的機器上,他們可以做他們想做的事情。你可能能夠加密它或者其他東西,或者可以將一個ID存儲到一個地理數據表(如一個郵政編碼,但是組成你自己的類似系統)或者一個地理數據的散列表或者其他東西,但是存儲在他們機器上的東西是他們的。