RESTAPI只能通过我的React客户端访问

RESTAPI只能通过我的React客户端访问,rest,api,security,go,mux,Rest,Api,Security,Go,Mux,我正在构建一个React.js应用程序,它将与内置的RESTAPI进行交互 React将使用Javascript获取API向我的API发送请求 问题是我想保护我的API不被其他地方请求。任何人都不能直接通过URL或任何其他客户端(如Postman)访问我的API 我知道什么是JWT,但这并不能解决我的问题,因为任何人都可以通过浏览器访问令牌,然后继续使用令牌在React客户端之外请求API 我进行了广泛的研究,但没有任何东西真正符合我的描述 事先非常感谢您的帮助。这是一个无法解决的问题。Reac

我正在构建一个React.js应用程序,它将与内置的RESTAPI进行交互

React将使用Javascript获取API向我的API发送请求

问题是我想保护我的API不被其他地方请求。任何人都不能直接通过URL或任何其他客户端(如Postman)访问我的API

我知道什么是JWT,但这并不能解决我的问题,因为任何人都可以通过浏览器访问令牌,然后继续使用令牌在React客户端之外请求API

我进行了广泛的研究,但没有任何东西真正符合我的描述


事先非常感谢您的帮助。

这是一个无法解决的问题。React在客户端上运行。客户端控制它执行的代码。因此,任何用于将API使用限制为仅限React客户端的机制都可以在其他客户端上下文中发现和重用。你无法控制客户,如果回报足够有价值,那么这样做的尝试就会失败

您可以尝试通过使用短期授权令牌对其进行某种程度的强化,但是没有任何东西可以阻止该令牌在另一个上下文中被抓取和重用

如果必须限制对API的访问,则应使用危险性或特权较低的公共API,公共API应利用您的私有API,有效代理调用以隐藏私有API,并确保仅对特权较高的API执行经验证的查询


但是,如果您能描述您试图缓解的问题,可能还有其他可用的解决方案。

您计划如何为该网页提供服务?一个想法是生成一个nonce,作为网页的标题发送。然后使用nonce访问API。然后,API将在后续请求的每个请求中返回另一个nonce。这将要求您使用网页加载的初始nonce调用API,从而从本质上保护API。它不是完美的,但总比没有好。@JustinSavala所以本质上你在考虑为每个请求生成一个nonce,这个特定的nonce的生命周期为1个请求?这是一种方法,是的。不过,攻击者只需在React客户端使用nonce之前抓取它,然后它就可以发出请求并接收新的nonce。这不是一种理想的方法,但至少可以阻止偶然的攻击。谢谢大家。这是我担心的响应。谢谢你的回答。