Javascript - 保护 API key

标签 javascript reactjs api csrf

我知道这是一个非常常见的问题,并且已经有很多关于它的文章。尽管在网上阅读了大量内容,但我找不到合适的解决方案。

我有一个完全公开的网站 - 没有登录/安全区域。整个网站由对各种第 3 方网站的 API 调用提供支持。该网站在前端使用 React。 React 需要调用 API 来为网站提供支持。

因此,问题在于保护 API key 。

简单的解决方案 1。

React 使 API 调用直接到第三方 API - 类似 https://api.someservice.com/endpoint?key=API-KEY

显然这不好,因为它暴露了 API-KEY。

解决方案 2。

每个人都建议在自己的服务器上创建一个服务,并从那里向第三方进行 API 调用。这样您就不必公开 API-KEY。因此 React 会进行类似 https://api.myserver.com/endpoint 的调用

然后该服务将调用第三方服务并返回结果。问题是,其他人可以调用我服务器上托管的端点并使用它 - 有效地使用我的 API-KEY。

所以,问题是,我如何确保我(我的 React 应用)是唯一可以调用我的服务器上托管的 API 服务的人?

----使用附加信息进行编辑。----

基本上显示 map 并叠加信息。当用户滚动 map 时,会异步进行 API 调用,并将与显示位置相关的信息叠加到 map 上。没有输入表单,没有提交,只有用户导航 map 时持续不断的异步 API 调用流。

我需要保护这些 API 调用。没有表单提交或任何类型的登录/身份验证。该网站向所有人开放。

最佳答案

我遇到了与您相同的问题,我打算做的是将 dotnet core 与 SPA 和服务器端渲染结合使用。就我而言,我使用的是 Angular,但他们确实已经准备好使用 React 和 React + Redux 模板。

通过这种组合,您的 React 应用程序将在 MVC 应用程序内运行。这意味着您可以拥有一个代理 API,它只接受来自本地主机的请求(记住您有 SSR),并且您可以从该 API Controller 调用其他 API。您的 key 将是安全的,因为它们只会由您的 C# Controller (即您的中间人)使用。实际的信息交换将在服务器之间完成

( Source )

关于Javascript - 保护 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48651587/

相关文章:

javascript - 提交表单 javascript 之前确认警报

node.js - express-http-proxy代理来响应js应用,但没有任何内容

javascript - Google Blogger API 错误 400

java - Jenkins Java API 和构建参数

ios - 错误 React Native IOS 异常 '-[__NSDictionaryM 长度] : unrecognised selector sent to

java - 包接口(interface)在哪里定义?

javascript - 如何更改 d3js 图表的布局?

javascript - ReactJS: "TypeError: Object(...)(...) is undefined"

javascript - 如何使用 .split 防止在引号逗号处拆分?

javascript - 如何检测路由变化并使用react?