【发布时间】:2018-04-09 20:43:24
【问题描述】:
假设您正在开发一个由后端 HTTP API 组成的应用程序,该 API 服务于前端 UI。 UI 在客户端的浏览器上呈现后,将需要对后端进行某些调用(例如,为视图获取数据)。但是,所有这些调用都可以在 Chrome 的开发者控制台上进行检查,例如。这暴露了我的应用程序的整体逻辑和内部 API 端点。
这是一个网络应用程序的问题吗?我浏览了其他一些网站(例如 Reddit),确实能够检查 API 调用是否正在进行,我什至设法通过 cURL 重现它,得到了相同的响应。
我解决这个问题的第一个想法是加密所有数据并在前端应用程序内部对其进行解密。但是,我认为这不会提供太多安全性,因为私钥必须在应用程序的源代码中进行硬编码,现代浏览器也可以对其进行检查。此外,这可能会极大地影响应用程序的性能。
我能想到的最好的办法是以某种方式为会话分配一个令牌(也许是 JSON Web 令牌?)(而会话又分配给一个用户)。进行 API 调用将需要此令牌,并且它的到期时间可能很短。但是,仍然可以在 HTTP 请求中看到令牌。
有什么想法吗?
【问题讨论】:
-
Fonsec - 我正在寻找解决相同问题的替代方案,很想知道您最终确定了什么?
标签: rest web-services web-applications api-design