Javascript 在JS应用程序中保护API密钥

Javascript 在JS应用程序中保护API密钥,javascript,Javascript,我是JavaScript新手 我想要的帮助是了解如何保护用于访问Restful web服务的API密钥 我正在使用API密钥访问一些Restful web服务,我希望这些API密钥得到保护。当我将API键放入控制器时,用户将看到它们,因为最终用户可以看到Javascript代码 在查看Javascript代码的最终用户看不到API密钥的情况下,我是否可以将它们注册为一些变量并在控制器中使用 提前谢谢 如果您需要保护任何东西,请在服务器上进行保护。例如,您可以在服务器上代理api调用,但无法使用客

我是JavaScript新手

我想要的帮助是了解如何保护用于访问Restful web服务的API密钥

我正在使用API密钥访问一些Restful web服务,我希望这些API密钥得到保护。当我将API键放入控制器时,用户将看到它们,因为最终用户可以看到Javascript代码

在查看Javascript代码的最终用户看不到API密钥的情况下,我是否可以将它们注册为一些变量并在控制器中使用


提前谢谢

如果您需要保护任何东西,请在服务器上进行保护。例如,您可以在服务器上代理api调用,但无法使用客户端javascript代码保护任何内容。

如果需要保护任何内容,请在服务器上进行保护。例如,您可以在服务器上代理api调用,但无法用客户端javascript代码保护任何内容。

您完全被搞糊涂了

你正在努力实现。 客户端上的所有内容都是透明的

只有在成功进行身份验证和授权后,才允许用户访问资源。句号

因此,如果API密钥被认为是机密的,则必须将其存储在服务器上(如Facebook提供的)


(顺便说一句:去掉angularjs标签)。

你完全搞糊涂了

你正在努力实现。 客户端上的所有内容都是透明的

只有在成功进行身份验证和授权后,才允许用户访问资源。句号

因此,如果API密钥被认为是机密的,则必须将其存储在服务器上(如Facebook提供的)


(顺便说一句:删除angularjs标签)。

我将angularjs与PlayFramework一起使用,似乎我可以解决这个问题,因为外部web服务/API是通过Play控制器访问的,其中控制器方法由angularjs模型通过

jsRouter.controllers.Application.tasks().ajax

因此,外部API键不必在AngujarJS模型中


谢谢大家的帮助。

我将AngularJS与PlayFramework一起使用,似乎我可以解决这个问题,因为外部web服务/API是通过Play控制器访问的,其中控制器方法由AngularJS模型通过

jsRouter.controllers.Application.tasks().ajax

因此,外部API键不必在AngujarJS模型中


谢谢大家的帮助。

不,不行。即使你以某种方式混淆了你的JS,这些键仍然会在请求本身中可见。请注意,一些API,例如Google的API,允许你为API键设置有效的引用者。只有当请求来自该推荐人时,密钥才会起作用。这并不完全是密钥保护,但它确实可以防止被盗的密钥在其他网站上被使用。不,你不能。即使你以某种方式混淆了你的JS,这些键仍然会在请求本身中可见。请注意,一些API,例如Google的API,允许你为API键设置有效的引用者。只有当请求来自该推荐人时,密钥才会起作用。这并不完全是密钥保护,但它确实可以防止被盗密钥在另一个网站上使用。请您解释一下如何代理API调用或向我介绍一个示例?如果[server proxy]从[API server]请求http请求,则存在通过网络发送的数据包数据。例如,我猜SSL会将其置乱,以阻止任何查看数据的人看到纯文本密钥。与查看JS网页或应用程序的开发人员工具相比,做这种事情更难。从服务器(网页或实时移动应用程序)下载并运行的一组文件与下载到移动应用程序文件空间(如本机应用程序)的一组文件之间也存在差异。如果请求来自本机ap,那么它们看起来像什么?可以限制到域吗?请您解释一下如何代理API调用,或者告诉我一个示例。如果[server proxy]从[API server]请求http请求,则存在通过网络发送的包数据。例如,我猜SSL会将其置乱,以阻止任何查看数据的人看到纯文本密钥。与查看JS网页或应用程序的开发人员工具相比,做这种事情更难。从服务器(网页或实时移动应用程序)下载并运行的一组文件与下载到移动应用程序文件空间(如本机应用程序)的一组文件之间也存在差异。如果请求来自本地ap,那么请求看起来会是什么样子,可以限制为Domain,但这并不能真正解决问题。在客户端应用程序中暴露API密钥的危险在于,某些用户可能会使用它发出非法请求。他们仍然可以这样做,通过调用游戏控制器,就像你在Angular中所做的那样。但这并不能真正解决问题。在客户端应用程序中暴露API密钥的危险在于,某些用户可能会使用它发出非法请求。他们仍然可以这样做,通过调用游戏控制器,就像在Angular中一样。