如何为每个域每个用户设置安全的API密钥
我计划提供付费服务,用户将获得一个域的API密钥和一个JSAPI/sdk。我如何确保只有此域和密钥的用户才能在合同中分配资源如何为每个域每个用户设置安全的API密钥,api,security,parse-platform,Api,Security,Parse Platform,我计划提供付费服务,用户将获得一个域的API密钥和一个JSAPI/sdk。我如何确保只有此域和密钥的用户才能在合同中分配资源 我将使用解析作为后端。我最担心的是欺骗IP流量以从我的服务中获得免费的服务器资源。第1部分: (前言,或“为什么你不应该在意”) 正如您提到的,您将使用PARSE.com作为后端——让我们来看看这个产品是如何解决同样的问题的,同时为开发人员提供服务: 他们给你两个“公共”密钥,你把它们放在他们提供的JSSDK中。通过查看页面的HTML源代码,开发人员web应用程序的任何访
我将使用解析作为后端。我最担心的是欺骗IP流量以从我的服务中获得免费的服务器资源。第1部分: (前言,或“为什么你不应该在意”)
正如您提到的,您将使用PARSE.com作为后端——让我们来看看这个产品是如何解决同样的问题的,同时为开发人员提供服务:
他们给你两个“公共”密钥,你把它们放在他们提供的JSSDK中。通过查看页面的HTML源代码,开发人员web应用程序的任何访问者都可以看到这些密钥。理论上,任何访问者都可以通过复制粘贴这些密钥并重用开发人员的JS文件来创建其服务的“副本” Parse对此并不关心,也不应该关心,因为它们只是提供了一种达到目的的方法。它们让您可以使用Parse作为后端构建一个功能齐全的web应用程序,但它们不关心您如何确保它只是您的web应用程序与Parse api通信。它们还通过API键限制/跟踪对请求的使用,API键与您的问题相关 JavaScript本质上是不安全的(因为它是客户端语言而不是服务器端)。开发人员无法确保恶意最终用户不会从页面源获取API密钥,并使用它们与解析项目通信(至少,如果没有某种内部代理隧道脚本,它将充当客户端应用程序和“服务器到服务器”中实际解析API调用之间的中间人)方式,而不向过程中的最终用户公开解析客户机密钥) 这就是说,完全基于“客户端”的web应用程序的架构应始终能够预见此类恶意用户,例如,在最终用户未经身份验证的情况下,不应向其公开任何“私有”资源(请参阅中有关解析ACL的更多信息) 考虑到上述信息,仍然有一种方法可以确保给定的API密钥仅由其指定给的域使用,尽管不是那么容易: 第二部分: (在
-“谷歌分析方式”中使用外部.js的实例)
让我们想想另一个流行的基于web的服务是如何工作的——Google Analytics(或任何其他分析服务)。他们给你一段JS,基本上是这样做的:
部分中:
这个JS资源只是服务器上的一个屏蔽动态脚本,所以您可以在其中执行任何必要的安全计算。该脚本至少应: