【问题标题】:Make server app accept requests only from the client app in the same hosting使服务器应用程序仅接受来自同一主机中客户端应用程序的请求
【发布时间】:2020-07-27 06:35:00
【问题描述】:

我有一个 Angular 和 php 应用程序托管在同一个共享主机中,并且可以从同一个域 example.com 访问。 php 应用程序公开了一个 rest api,我希望这个 api 只能从 angular 应用程序访问。

这两个应用都没有用户身份验证。

【问题讨论】:

    标签: php apache hosting shared-hosting


    【解决方案1】:

    最好的方法是将后端放置在私有子网中,前端 angular 可以通过内部网络路由访问该子网。

                           [ Your network /16 ]
                [ Public Subnet /24 ] [ Private Subnet /24 ]
                   [Frontend]  <-  Route ->   [Backend]
    

    但根据您的情况,您将两者托管在同一个服务器实例中,这些服务器实例是公共的。以上建议不适用。由于您不能在网络层限制它,您可以查看应用程序层,并且可以使用 Web 服务器配置扩展,例如 .htaccess,您可以创建一个只允许前端请求的规则。这是应用层限制。

    【讨论】:

    • 感谢您的回复。我尝试调整 .htaccess 并失败了几次。我试图拒绝所有人并允许来自本地主机。例子.com。但是没有用。
    • 您不能从 localhost 明确允许您需要指定前端应用程序正在使用的公共 ip;这将取决于您的 htaccess 无法正常工作的网络服务器错误。
    【解决方案2】:

    正如@Edcel Cabrera Vista 提到的,我尝试通过向 .htaccess 文件添加规则来限制应用层中的调用,如果传入的客户端 IP 与我的网站 IP 或本地主机匹配,则检查 PHP 文件,添加基本授权。它们都不起作用,因为最终的 Angular 应用程序只是在用户浏览器中运行的客户端 JS 代码,因此用户可以完全控制它,并且客户端 IP 将始终是用户的 IP。

    我最终意识到我可以在服务器端进行 HTML 渲染,并将准备好的 HTML 页面返回给客户端。暂时满足我的需要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 2016-03-30
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 2012-05-26
      相关资源
      最近更新 更多