如何保护同一服务器上前端使用的 Rest API 端点?

Posted

技术标签:

【中文标题】如何保护同一服务器上前端使用的 Rest API 端点?【英文标题】:How to secure Rest API endpoint that is consumed by the frontend on same server? 【发布时间】:2021-10-25 18:57:37 【问题描述】:

想象一下前端(例如通过 ajax 请求)从 Rest API 获取数据并使用它的场景。保护 Rest API 的最佳方式是什么?

我在考虑不记名令牌。但是话又说回来,不记名令牌仍然可以从代码中被拦截/挖掘。

我也在考虑 CORS 并且只允许同源标头,但这同样可以通过 curl 等进行欺骗。

我还在考虑构建令牌环系统,其中请求者首先必须宣布他读/写资源的意图,然后要么被批准并给予一个使用令牌来执行读/写或被拒绝。但这最终可能会占用大量资源和性能。

还有哪些其他选择?

【问题讨论】:

【参考方案1】:

我们需要一些上下文。问题是为什么您需要保护数据。根据您的要求,答案可能会有所不同..

如果您在网页上公开获取的数据可供所有人使用,即使您使用令牌也无法确保其安全。因为任何人都知道网络是如何工作的,所以可以使用令牌来捕获数据或简单地解析您的网页。

如果您想限制 API 的使用,那么您可以实施 API 网关和网络防火墙,这样任何人都不会滥用您的 API 端点。

【讨论】:

以上是关于如何保护同一服务器上前端使用的 Rest API 端点?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CORS 保护 REST API?

如何使用CORS保护REST API?

如何保护单页应用程序和服务器之间的 REST api?

在烧瓶中保护 REST api

如何在没有弹簧安全的情况下使用 api 密钥保护 rest api

如何发布访问 REST api 的 jQuery 代码,但保护它免受未经授权的使用