更多的理论问题,但我真的很好奇!
我有两部分申请:
apache服务代理从UI到服务器的所有http请求。因此,如果用户相当熟练,他们可以通过检查浏览器开发人员工具中的调用来对我们的API进行反向工程。
因此,如何阻止用户直接使用服务器API,而是强制他们使用UI?
服务器无法确定是否来自UI的呼叫,因为用户可以从UI外部调用myapp.com/apache-proxy/blah/blah/blah
,apache将获取请求并将其转发到服务器,我不知道它不是来自用户界面。
我看到的选项是从UI中向请求中注入一个标头,该标头指示请求的来源作为UI。尽管如此,这似乎已成熟。
答案 0 :(得分:2)
对我来说,这更像是一个网络问题,因为它是我在网络层面解决的问题。如果在专用网络(或具有防火墙规则的公共网络)上运行后端应用程序,则可以将后端主机配置为仅接受来自Apache服务器的通信。
这样最终用户无法直接连接到API,因为公众无法访问它。只有允许的Apache服务器才能与后端API通信。这样,Apache服务器就充当了最终用户(客户端)和后端API服务器之间的中介。
AWS的示例图表。
答案 1 :(得分:0)
在接受来自它们的任何请求之前,您可以使后端服务器要求连接进行身份验证。然后使它只有Apache服务器才能以最终用户无法复制的方式成功进行身份验证。例如,通过在Apache和后端之间使用SSL / TLS,后端需要使用客户端证书,然后向Apache发出后端将接受的私有证书。然后,最终用户将无法直接使用后端进行身份验证。