当前位置: 首页 > 知识库问答 >
问题:

设置只有Web服务器才能看到的API

壤驷旭
2023-03-14

所以我想让nginx提供我的反应应用程序,它使用一个设置为我进行所有API调用的API。我想这样做,这样我就可以保护我的API密钥和秘密。因此,API服务器运行在端口9001上,我的反应应用程序正在对http://localhost:9001/api/v1/token进行api调用。它工作得很好。我的问题是,我如何阻止某人做以下事情来获得令牌?

curl -X POST --header "referer: http://localhost:8081" -i http://localhost:8081/api/v1/token

谢谢

共有1个答案

艾文斌
2023-03-14

如果你问的是如何只允许你的响应应用程序使用你的应用程序接口服务器,那么答案是你真的不能。

从浏览器发出的任何请求都必须发送到服务器,该服务器可以通过许多其他方式访问(例如您的Curl示例)。您不能只允许React代码发出的请求,也不能禁止与API服务器通信的所有其他尝试,因为在最低级别上,这些都只是http请求。任何有决心的黑客都可以观察浏览器从React应用程序发送的内容,并发出一个与之类似的http请求。这是web浏览器中应用程序工作方式的基本设计特征。

也就是说,您可以做一些事情来“保护”您的API服务器不被滥用。

1.需要某种形式的帐户或身份验证。这至少需要黑客在您的系统中创建一个帐户,并使用该帐户访问您的API服务器(稍后将对此进行详细介绍)。

2.实施速率限制,使单个帐户(根据上一步中的凭据检测)只允许特定频率、模式或访问。这至少可以保护您的API服务器不被一个坏角色过度滥用。

3.实施滥用控制。如果一个特定的帐户经常滥用API服务器(达到速率限制控制,并且通常比任何合理的普通浏览器用户在API服务器上使用更多的资源),那么您可以禁止该帐户。

谷歌地图(GoogleMaps)等服务在努力保护其API服务器的完整性时实现了上述三点。

还有其他一些技术,比如在网页中嵌入一个不断变化的令牌,随后每次调用API服务器都需要这个令牌,但是一个有决心的黑客会从网页上刮下令牌,然后使用它直到它过期,所以这实际上只是黑客绕过的另一个障碍,而不是真正的障碍。

 类似资料:
  • PHP 5.4 之后, 你可以不用安装和配置功能齐全的 Web 服务器,就可以开始学习 PHP。 要启动内置的 Web 服务器,需要从你的命令行终端进入项目的 Web 根目录,执行下面的命令: > php -S localhost:8000

  • 问题内容: 当我在Eclipse中转到 文件- >新建->其他-> Web服务-> Web服务客户端并选择“ Web服务运行时”时,我看到“ Apache CFX 2.x”,但是完成按钮被禁用,我得到了对话框中的以下内容: “从运行时和部署服务器列表中选择,或使用默认设置。” 我是否真的必须设置服务器才能在Eclipse中使用CXF生成Web服务客户端? 提前致谢。 问题答案: 是的,看起来确实如

  • Debug 字段 该设置默认值是 false,当发生错误时,只返回错误信息本身。 当该字段设置为 true 时,当发生 panic 时,会将整个 panic 的错误堆栈信息返回给客户端,在用户进行 hprose 服务开发时,该设置可以帮助你快速定位错误位置。 ErrorDelay 字段 该设置为整型值,默认值为 10 秒。 该字段表示在调用执行时,如果发生异常,将延时一段时间后再返回给客户端。 在

  • 主要内容:1. 设置虚拟服务器,2. 配置位置,3. 使用变量,4. 返回特定状态码,重写URI请求,5. 重写HTTP响应本文介绍如何将NGINX配置作为Web服务器,并包括以下部分: 设置虚拟服务器 配置位置 使用变量 返回特定状态码 重写请求中的URI 重写HTTP响应 处理错误 在高层次上,将NGINX配置作为Web服务器有一些问题需要了解,定义它处理哪些URL以及如何处理这些URL上的资源的HTTP请求。 在较低层次上,配置定义了一组控制对特定域或IP地址的请求的处理的虚拟服务器。 用

  • 我试图理解“在VS2013中调用Exchange Web服务”的概念,但到目前为止失败了。 我得到了一个新的asmx地址到一个MS交换WS,我要在VS2013中调用它。我要把它从旧的addr。(工作得很好。)到我们旧的内部交换到这个新的EWS云东西。但是我不明白我必须做什么才能让它工作。 除了EWS网址,我还得到了一个密码和用户名。 我还添加了"Microsoft Office 365 API T

  • 以下是配置一个生产Web服务器一般过程: 要拥有一个正在运行的生产Web服务器,需要一个运行Linux/Unix,Windows或MacOS等的专用节点(物理/虚拟或云实例)。 Web服务器必须具有直接网络连接并在服务器上配置静态IP地址。 它需要拥有运行网页所需的所有模块。如果Web服务器处理PHP页面,则需要启用PHP模块。 它还需要配置并运行良好的防病毒应用程序,以保护Web服务器免受恶意软