Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React JS中是否有保护API密钥的方法,即使它';他在客户端吗?_Javascript_Reactjs_Client Side_Api Key - Fatal编程技术网

Javascript React JS中是否有保护API密钥的方法,即使它';他在客户端吗?

Javascript React JS中是否有保护API密钥的方法,即使它';他在客户端吗?,javascript,reactjs,client-side,api-key,Javascript,Reactjs,Client Side,Api Key,在javascript文件上使用API密钥时,是否有任何方法来保护它?比如, emailjs.init("API_KEY"); 不,如果是公开的,那就是公开的 但是您可以设置一个服务器,负责后台通信,这样您的密钥就可以保密。 就Firebase it而言,不应该存在安全风险 不,如果是公开的,那就是公开的 但是您可以设置一个服务器,负责后台通信,这样您的密钥就可以保密。 就Firebase it而言,不应该存在安全风险 您可能需要检查Google Firebase如何进行纯客户端身份验证: 编

在javascript文件上使用API密钥时,是否有任何方法来保护它?比如,

emailjs.init("API_KEY");

不,如果是公开的,那就是公开的

但是您可以设置一个服务器,负责后台通信,这样您的密钥就可以保密。
就Firebase it而言,不应该存在安全风险

不,如果是公开的,那就是公开的

但是您可以设置一个服务器,负责后台通信,这样您的密钥就可以保密。
就Firebase it而言,不应该存在安全风险

您可能需要检查Google Firebase如何进行纯客户端身份验证:

编辑: 这篇关于使用API密钥、OAuth等进行身份验证的概括性介绍(来源:codecademy Building web apps课程)可能有助于理解API密钥的用途以及为什么不需要保护它们。原因是,如本文所述,还有其他处理机密信息的方法

认证

导言

身份验证是应用程序用来确定和确认用户身份的过程。它确保向用户显示正确的内容。更重要的是,它确保未经授权的用户可以安全地使用不正确的内容

在本文中,我们将讨论这些交互的一些常见设计模式。您需要对HTTP请求有一些基本的了解,因为这些方法都使用HTTP请求来交换信息

密码验证

最常见的身份验证实现要求用户输入用户名、电子邮件和密码。然后,应用程序的服务器检查提供的凭据,以确定用户是否存在以及提供的密码是否正确。如果凭据正确,则用户已登录,并且能够以该用户身份使用应用程序

通常,成功登录后,应用程序将使用身份验证令牌(或身份验证令牌)进行响应,以便客户端用于其他HTTP请求。该令牌随后存储在用户的计算机上,防止用户持续登录

此令牌通常在一定时间后过期,以确保正确的用户也在使用应用程序

API密钥

虽然通常认为身份验证是人类用户和应用程序之间的交互,但有时用户是另一个应用程序

许多应用程序以API(应用程序接口)的形式向其信息公开接口。例如,Spotify API为其几乎所有功能提供端点。这允许应用程序从Spotify音乐目录中获取数据,并管理用户的播放列表和保存的音乐

由于这些外部请求可能会淹没服务并访问用户信息,因此需要使用身份验证对它们进行保护

从另一个应用程序访问API的最基本模式是使用API密钥

公共API通常提供开发人员门户,您可以在其中注册应用程序并生成相应的API密钥。该密钥对于您的应用程序是唯一的。当您的应用程序发出请求时,此密钥将随请求一起发送。然后,API可以验证是否允许您的应用程序访问,并根据应用程序的权限级别提供正确的响应

API可以跟踪每个应用程序发出的请求的类型和频率。此数据可用于将特定应用程序的请求限制为预定义的服务级别。这可以防止应用程序滥发端点或滥用用户数据,因为API可以轻松阻止该应用程序的API密钥,并防止该应用程序进一步恶意使用API

非统组织

对于许多应用程序,通用的开发人员级API密钥是不够的。如前所述,API有时能够提供对用户级数据的访问。但是,大多数服务仅在用户启用此私有数据时才提供它

例如,Facebook不希望Tinder访问其用户的所有数据,只希望那些选择允许共享数据的用户能够更好地帮助他们找到所在区域的匹配项

解决此问题的一个基本方法可能是让用户向中间应用程序提供其登录凭据,但这不是非常安全,当请求的应用程序可能只需要非常有限的一组权限即可运行时,它将提供对请求的应用程序的完全访问权限

OAuth定义了解决此问题的更优雅的方法。它是由推特的首席开发者布莱恩·库克于2006年11月开发的,1.0版于2010年4月发布

OAuth是一种开放标准,通常用于授予应用程序访问用户信息的权限,而不强制用户泄露密码

开放标准是对某些功能如何工作的公开定义。但是,该标准实际上并没有构建该功能

因此,每个API都需要实现自己的OAuth版本,因此可能有稍微不同的实现或流程。然而,它们都基于相同的OAuth规范

这会使使用新的OAuth API更加令人沮丧。但是,随着时间的推移,您将开始注意到API身份验证流之间的相似性,并能够越来越轻松地在应用程序中使用它们。下面是标准OAuth流的摘要

通用OAUTH流

许多实现OAuth的应用程序将首先要求用户选择他们希望用于凭据的服务:

使用Google、Facebook或Twitter登录

选择素后