Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/137.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
Reactjs 如何防止使用为React应用程序提供数据的my API_Reactjs_Api_Security - Fatal编程技术网

Reactjs 如何防止使用为React应用程序提供数据的my API

Reactjs 如何防止使用为React应用程序提供数据的my API,reactjs,api,security,Reactjs,Api,Security,我创建了一个web服务,并将使用React。将从我的API获取服务的数据 但是有一种简单的方法可以找出我正在使用的端点,以及我正在发送的数据。这些知识为我的服务提供了很多选择 有什么办法可以防止这种情况发生吗? 我知道,我可以要求签署所有请求,但这也很容易了解。这里有两个基本的预防措施,您可以使用 验证码 使用验证码服务,如。因此,用户只能在通过验证码测试后才能使用您的网站。机器人通过验证码是非常困难的 速率限制Api的使用。 将速率限制添加到api中。因此,登录用户在10分钟内只能发出10

我创建了一个web服务,并将使用React。将从我的API获取服务的数据

但是有一种简单的方法可以找出我正在使用的端点,以及我正在发送的数据。这些知识为我的服务提供了很多选择

有什么办法可以防止这种情况发生吗?


我知道,我可以要求签署所有请求,但这也很容易了解。

这里有两个基本的预防措施,您可以使用

  • 验证码
    使用验证码服务,如。因此,用户只能在通过验证码测试后才能使用您的网站。机器人通过验证码是非常困难的

  • 速率限制Api的使用。
    将速率限制添加到api中。因此,登录用户在10分钟内只能发出100个请求,数量将取决于您的用例


  • 这是不可能做到的。无论在客户端JavaScript中完成什么,都可以进行反向工程和模拟

    应致力于防止API被滥用,即根据客户的活动或可用信息(用户代理、可疑请求、生成的流量)限制或黑名单客户。如果API的使用允许验证码,可疑客户可以被要求证明他们的人性

    有一半的措施可以应用于客户端应用程序,使其不利于滥用(也不利于开发)

    防止未经授权访问未统一/未融合的JS和源地图。可能需要根据每个用户对其进行授权。这将使调试和bug报告更加困难

    请求签名到浏览器API所涉及的硬代码部分,例如:

    这要求机器人模拟浏览器环境,使其工作效率大大降低。这也会以负面的方式影响应用程序的设计。显然,SSR会有额外的困难,而且它不容易转换到本机平台

    apiKey = hash(NOT_SO_SECRET_KEY + document.querySelector('.varyingBlock').innerHTML)