這裏是我的問題:如何確保發送到服務器的GPS位置準確?
我有一個手機應用程序,我想給用戶一些信息,根據他們的位置(想像FourSquare一樣)。但如何確保用戶的位置是真實的?
我的意思是讓我們說客戶端通過HTTP使用到服務器的請求:
惡意用戶可以很容易地修改值。
那麼如何確保值是準確的?
這裏是我的問題:如何確保發送到服務器的GPS位置準確?
我有一個手機應用程序,我想給用戶一些信息,根據他們的位置(想像FourSquare一樣)。但如何確保用戶的位置是真實的?
我的意思是讓我們說客戶端通過HTTP使用到服務器的請求:
惡意用戶可以很容易地修改值。
那麼如何確保值是準確的?
你不能。正如你已經想到的那樣,客戶端總是可以操縱發送給服務器的請求。
您可以在服務器端做的唯一事情是過濾不太可能的座標(例如在海上,取決於座標的含義)。
有人可以欺騙/僞造手機,將GPS協調設置到其他地方。正如@JochenJung所說,總是可以改變請求。
我一直在想同樣的事情,但是害怕它是不可能的。 一些想法我有:
是的,我正在考慮用共享密鑰對它進行加密。但後來的關鍵將在客戶端上,這將是完全可以破解的... – 2010-08-17 09:39:22
到目前爲止,我能想出的最好是混淆..但這不是一個真正的解決方案 – 2010-08-17 09:47:25
問題是,即使你可以使url對於實際的GPS測量是真實的,仍然有可能僞造實際的GPS測量值。 – 2010-08-17 09:50:54
你總是可以使用pgp加密應用程序,然後發送一個數據包到服務器將解碼消息,你會知道這是發送請求的程序。
所以,如果用戶想僞造座標,他需要破解手機上的軟件才能真正做到這一點。
希望能給你一些想法...
在另一方面,你可以發出在第一次接觸到服務器(認證或類似的東西)的散列,並且對您的移動應用一些簡單的數學: X your_hash和y your_hash或類似的東西(應該是更復雜的,因爲它很容易猜測) 然後在服務器上: http://www.myserver.com/getdata?lat=x&lon=y 然後:上的應用程序的服務器端: LAT =緯度/ your_hash lon = lon/your_hash 現在如果緯度/經度偏離電網,那麼JochenJung在海邊某處說......你可以忽略這個要求。 ,並且僅僅因爲您想要確定哪個用戶發送了請求,您將需要對查詢字符串進行一些標識,這可以用作附加變量以創建更好的結果。
你真的想要一個移動設備,應任何惡意服務器的請求,別無選擇,只能傳輸你的座標給它嗎? – 2010-08-17 09:23:52
您可能希望爲識別作弊者的用戶提供徽章:)(即將問題委託給人類)。 – 2010-08-17 09:35:35
順便說一句:這可能會讓你感興趣:http://techcrunch.com/2010/02/16/foursquare-cheating/ – 2010-08-17 09:36:19