javascript - 如何保护 JavaScript API 访问 token ?

标签 javascript security leaflet mapbox

有许多在线资源提供 JavaScript API 来访问他们的服务。为了更清楚,我将以 MapBox 的示例为基础提出问题。 ,但这也适用于各个领域的许多其他服务。

当有人想在 Web 应用程序中使用此类服务​​时(例如来自 MapBox 的 map 图像),他们通常需要注册/注册并获取访问 token 才能访问该服务.

现在,如果我从服务器端使用 API - 没有问题:我知道我的 token 安全地存储在服务器的某个地方,并且仅在我的服务器和服务提供商之间进行通信时公开,这没问题,因为long 是 HTTPS。但是,如果是 JavaScript API(例如,如果我使用 Leaflet 从 MapBox 渲染 map ),我应该在暴露给用户网络的 JavaScript 中拥有我的访问 token 浏览器 - 因此它可以非常容易地找到某人的访问 token 。我的用户,或者在公共(public)服务的情况下,实际上是任何人,都能够在浏览器的“开发工具”中找到 token 。

然而,对于我来说,这个 token 应该被视为一个敏感数据——服务使用是根据这个 token 提供的身份验证来跟踪的。如果您根据其使用情况为服务付费,它就变得至关重要,但即使您不这样做(例如,如果您使用免费/入门/非付费计划) - 服务使用是有限的,我想确定它只有我在使用它。

我唯一的选择是通过我自己的网络服务器代理吗?

如果 JavaScript 在用户的浏览器中执行,是否有办法保护 JavaScript API 用于访问外部服务的访问 token ?

最佳答案

使用 CORS 限制访问

使用 CORS 设置,让您的网络服务器在来自您的 javascript 的 ajax 请求中返回访问 token 。可以使用此方法访问您的应用程序来捕获 token 。

向授权用户提供 token

您还可以在您的网络服务器上添加身份验证,以向您允许的用户提供有限的访问权限。可以使用此方法捕获 token ,但只能由授权用户捕获。

代理请求

完全保护该 token 的唯一方法是通过您的服务器代理请求。使用此方法无法捕获 token 。请注意,这可能违反服务条款。

关于javascript - 如何保护 JavaScript API 访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31611072/

相关文章:

javascript - charAt 返回为未定义

android - 加解密资源库

php - 如何防止 PHP 中的 SQL 注入(inject)?

javascript - Leaflet:如何在 map 上显示所有图层?

javascript - 重新绘制传单中的标记

javascript - 无法使用 php、javascript 在 IE 上打印 iframe,而是打印当前页面,其中有打印按钮

javascript - Undefined 不是一个对象 React Native 和 Firebase

javascript - css - translate3d 会导致元素在移动浏览器中可拖动吗?

asp.net - 安全 cookie ASP.NET

javascript - 将 Leaflet LatLng 转换为 x,y 像素图像叠加层