了解AppKey安全性(无秘密)

时间:2015-02-11 07:17:04

标签: java spring api security

我看到很多服务,主要是像GMaps或MapQuest这样的地图服务,要求用户先前注册才能获得appKey。之后,在每次请求时,用户都必须附加appKey http://server/service?appKey=sdf7dfj34。{/ p>

我理解这种appKeys不安全,主要用于了解您的服务使用情况。任何人都可以看到您的appKey并在自己的应用中使用。

我看到其他服务,在注册过程中,要求您将域放在执行代码的位置。通过这种方式,他们可以检查发出请求的域是否与为该域生成的appKey相对应。

我的问题是:

  • 这种控制安全吗?
  • 我可以确保用户真的是注册用户。
  • 如果可以使用domain-appKey选项,如何实现呢? (我使用Java-Spring)。

我必须澄清我的意图是用户可以使用JavaScript + AJAX通过appKey请求数据。

感谢。

1 个答案:

答案 0 :(得分: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,则该域名有效。