2012-11-29 124 views
3

現在我正在開發處理覆蓋在Google地圖上的當地餐館的評論/推薦的服務。基本上Yelp,但限制在一定的利基。無論如何,因爲我不想一次加載每個位置並進行檢查,所以我終於開始使用jQuery和AJAX調用。如何保護我的AJAX服務?

我的問題是:如何防止其他人從服務器上的ajax腳本中'刮'數據?

主要的地圖/位置信息功能需要公開,因爲用戶不需要登錄即可使用該應用程序,因此它可能簡單地歸結爲使困難刮。我希望你們中的一位AJAX老手能指出我有更好的想法,或者我還沒有找到的一些「最佳實踐」文檔。

到目前爲止,所有我已經能夠拿出的是:

  • 面向用戶的腳本在服務器上打開一個短暫的會議和AJAX調用將沒有有效的會話中運行。
  • 發送某種訪問鍵以及應用程序代碼,並要求在所有的AJAX調用中。但不知道如何以一種不平凡的方式實現這一點。
+1

請記住,JS本質上是開源的。你可以得到的最接近的是混淆 –

回答

5

您無法完全保護您的AJAX Web服務。即使您破壞了數據並混淆了您的源代碼,僅僅啓動一個數據包嗅探器或調試代理就可以了,並從中剔除它。

我會做的就是你的建議......只有在網站上有活動會話的用戶才能撥打電話。然後從那裏,節流請求。

即使是一個繁忙的普通用戶,每分鐘的請求量也不會超過幾個。你可以分析你的日誌來找出一個好數字。即使您將服務限制爲每分鐘20個電話,這種限制對於想要複製所有內容的人來說也是無用的。

不要僅限於會話數據...請留意IP地址。任何時候都可以發起請求並獲得新的會話。定期檢查您的日誌,看看是否有任何事情正在通過,並相應地調整您的策略。

最後,定期搜索您的內容。 Google是查找版權侵權者的絕佳工具。如果您使用特定數據(例如GPS座標),則實際上可以在座標的噪聲區域中以特定值對座標進行水印處理。

+0

我一直在考慮添加一些'紅鯡魚'的位置,但是對這些座標的水印是我的新東西。這個「噪音」區域存在多少? – Sammitch

+0

比我的信息更豐富! –

+0

@Sammitch,這取決於您的準確性需求和地球上的位置。 (例如,較高緯度的經度距離較小。)假設我在芝加哥的國會和密歇根大道,我想穿越密歇根(6車道和中位數)。我會從-87.62440到-87.62413經度。如果您使用雙精度浮點座標,您可以輕鬆地給自己幾位數字進行水印處理,而不會影響座標的準確性。請記住,無論如何,大多數GPS單元不會精確到15英尺以上! (手機輔助GPS更準確。) – Brad

1

從我聽到的,你想要保護JavaScript服務的一面。這是不可能的,因爲JavaScript本質上是完全開源的(儘管不是公有領域)

Google提供了一個tool called Google Closure,它可以通過刪除空格和製表符來壓縮腳本。它也可以通過用隨機字符替換變量名稱和函數名稱來爲您混淆文檔。它是可定製的,所以你可以告訴它你想要什麼。從我所知道的情況來看,Google將它用於他們自己的網站(通過查看他們網頁的來源很明顯)

+0

JavaScript混淆不是很有用,特別是因爲他真正需要保護的是被訪問的數據。谷歌不會像他們縮小代碼一樣混淆他們的代碼,但它的效果相似,但是其目標是縮小代碼以便下載。 – Brad

+0

@Brad minify本質上是您可以在不瞭解JavaScript混淆的情況下獲得的最佳混淆模式。它會阻止任何想成爲黑客的人(試圖進入黑客世界的人) –