【发布时间】:2020-07-27 06:35:00
【问题描述】:
我有一个 Angular 和 php 应用程序托管在同一个共享主机中,并且可以从同一个域 example.com 访问。 php 应用程序公开了一个 rest api,我希望这个 api 只能从 angular 应用程序访问。
这两个应用都没有用户身份验证。
【问题讨论】:
标签: php apache hosting shared-hosting
我有一个 Angular 和 php 应用程序托管在同一个共享主机中,并且可以从同一个域 example.com 访问。 php 应用程序公开了一个 rest api,我希望这个 api 只能从 angular 应用程序访问。
这两个应用都没有用户身份验证。
【问题讨论】:
标签: php apache hosting shared-hosting
最好的方法是将后端放置在私有子网中,前端 angular 可以通过内部网络路由访问该子网。
[ Your network /16 ]
[ Public Subnet /24 ] [ Private Subnet /24 ]
[Frontend] <- Route -> [Backend]
但根据您的情况,您将两者托管在同一个服务器实例中,这些服务器实例是公共的。以上建议不适用。由于您不能在网络层限制它,您可以查看应用程序层,并且可以使用 Web 服务器配置扩展,例如 .htaccess,您可以创建一个只允许前端请求的规则。这是应用层限制。
【讨论】:
正如@Edcel Cabrera Vista 提到的,我尝试通过向 .htaccess 文件添加规则来限制应用层中的调用,如果传入的客户端 IP 与我的网站 IP 或本地主机匹配,则检查 PHP 文件,添加基本授权。它们都不起作用,因为最终的 Angular 应用程序只是在用户浏览器中运行的客户端 JS 代码,因此用户可以完全控制它,并且客户端 IP 将始终是用户的 IP。
我最终意识到我可以在服务器端进行 HTML 渲染,并将准备好的 HTML 页面返回给客户端。暂时满足我的需要。
【讨论】: