安全地解耦后端和前端(node.js服务器)



我最近一直在研究node.js、RESTAPI和WebSockets,以进一步了解后端和前端web开发。尝试使用我看到的REST API的最佳实践总是出现。现在我的问题,我似乎不明白如何正确解决。

举个例子,我想让客户机/服务器解耦,为此我在后端实现了一个REST API,这样我的前端就可以访问并获得要渲染的数据。具体的(想象的)例子:比方说我想建立一个租赁服务网站。现在,我想让我的前端有一个端点来访问某些产品的信息,比如说到目前为止租用的自行车数量。我希望能够在我的前端显示这一点(通过REST API的帮助),但我不希望其他调用此REST API的人能够获取数据(因为间谍活动是一项严肃的业务,我希望远离邪恶的人,是的,他们可以进行网络抓取,但bla-bla)。因此,从本质上讲,我希望localhost机器能够访问REST API(的一部分),但不能访问其他任何人。事情变得复杂了,因为我也希望人们能够在我的网站上创建一个用户,所以我希望有其他端点可以无限制地访问,因为我在想,如果在某个时候我想有一个与服务集成的移动应用程序会怎么样。那么将所有请求限制为CCD_ 2将是不可行的。

您将如何构建这样一个安全的服务器/客户端?或者在你看来,让REST API暴露给其他人(邪恶的人)不是一件大事吗?

以上内容也适用于WebSockets。我知道REST API都很好,但我认为未来在于近乎实时的连接,所以我同样对WebSockets感兴趣(当然是通过更高级别的模块,Socket.io、SockJS等)。

有许多解决方案可以保护API的安全,其中许多都是开源的。你会用哪一个取决于你的具体需求。

但为了让你开始,我将提到一个被大型社区接受和支持的解决方案:

看看JSONWebToken,例如本文中对其进行了解释。

基本上,您的客户端从服务器请求身份验证令牌,然后将其存储在本地,以便在每次请求API时重用它。另一方面,服务器可能会根据需要保护您的API。这意味着您可能还有一个公共的API,它不期望在HTTP头中有令牌。

代币也可能过期。例如,如果你允许一个新用户在有限的时间内在你的网站上注册,那就很方便了。

这是另一篇解释事情的文章。

现在转到你问题的websocket部分。是的,您当然也想保护您的服务器端套接字。因此,请注意支持身份验证的库。同样,我认为有很多开源库。

举一个例子:Primus。Primus是下面许多套接字库的抽象层,可以让您快速更改套接字提供程序。但它也有一个可以实现的身份验证挂钩。

你猜怎么着。。您可以使用它来检查JSON Web令牌!

希望这能让你开始。

相关内容

  • 没有找到相关文章

最新更新