2015-02-11 77 views
1

我看到很多服務,主要是地圖服務,如GMaps或MapQuest,需要用戶先前註冊才能獲得appKey。之後,在每次請求時,用戶必須附加appKey,如http://server/service?appKey=sdf7dfj34瞭解AppKey安全性(沒有祕密)

我明白這種appKeys是不安全的,主要是有用的知道你的服務的用途。任何人都可以看到你的appKey並在自己的應用程序中使用。

我看到其他服務,在註冊過程中,要求您將域放在執行代碼的位置。通過這種方式,他們可以檢查發出請求的域是否與爲該域生成的appKey相對應。

我的問題是:

  • 是這種控制的安全呢?
  • 我可以確保用戶確實是註冊的用戶。
  • 如果domain-appKey選項可行,該如何實現呢? (我正在使用Java-Spring)。

我必須說明我的意圖是用戶可以通過使用JavaScript + AJAX的appKey請求數據。

謝謝。

回答

0

難道你不能只包含域中的appKey?例如。 appKey的一部分是域的散列(對於最簡單的密鑰,您可以使用MD5和base64來編碼散列字節)。

然後爲了驗證域,您對請求的域進行了散列並將其與appKey進行比較。

澄清:

  1. 用戶想要獲得的域 「user.domain.com」 一個的AppKey。

  2. 您將「user.domain.com」散列到SOME_DOMAIN_HASH_TOKEN。

  3. 對AppKey將SOME_GUID + SOME_DOMAIN_HASH_TOKEN(+可能是別的東西)

  4. 用戶從某些域發送的AppKey到您的服務器。

  5. 你從請求中散列該域並與來自appKey的散列進行比較。

  6. 如果兩者均爲SOME_DOMAIN_HASH_TOKEN,則域有效。

+0

我的意圖是用戶可以通過AJAX提出請求。檢測發出請求的域是否可以成爲問題?我的意思是因爲代碼是由瀏覽器執行的。謝謝。 – EricSonaron 2015-02-11 11:30:16