我正在构建一个React.js应用程序,该应用程序将与我在Go中构建的REST API进行交互。
React将使用Javascript Fetch API将请求发送到我的API。
问题是我想保护我的API免受其他地方的要求。没有人可以直接通过URL或任何其他客户端(如Postman)直接访问我的API。
我知道JWT是什么,但这不能解决我的问题,因为任何人都可以通过浏览器访问令牌,然后继续使用令牌在React客户端之外请求API。
我已经进行了广泛的研究,但是没有什么真的符合我的描述。
非常感谢您的帮助。
答案 0 :(得分:6)
这是一个固有无法解决的问题。 React在客户端上运行。客户端控制它执行的代码。因此,您用于将API使用限制为仅React客户端的任何机制都可以在其他客户端上下文中发现和重用。您无法控制客户,如果回报足够有价值,那么尝试这样做就会失败。
您可以尝试通过使用短期授权令牌来对其进行某种程度的强化,但是没有什么可以防止该令牌在另一上下文中被抢夺和重用。
如果必须限制对API的访问,则应该使用危险性或特权较低的公共API,并且公共API应该利用您的私有API,从而有效地代理调用以隐藏私有API。以确保仅针对特权更高的API执行经过验证的查询。
但是,如果您可以描述要解决的问题,则可能还有其他解决方案。