通过反向代理保护对 CGI 程序的访问

通过反向代理保护对 CGI 程序的访问

我在网络领域还是个菜鸟,自学成才,所以如果我要问的问题有误,请原谅我。

我有一个基于 JavaScript 和 PHP 的 Web 应用程序,由我的 Apache Web 服务器提供服务。

我已经用 PHP 实现了一个登录系统,现在客户可以通过它访问我的应用程序。登录后,应用程序会提供一些 Web 服务,而用户在未登录时则无法看到这些服务。理论上来说...

事实上,截至目前,如果用户知道这些服务的直接 URL(可以通过 Web 控制台检索),他/她就可以访问该资源,无论他/她是否登录。

Web 服务由 CGI 程序生成。

我想找到一种方法来保护这些服务,以便除了我的 Web 应用程序(或者更好的是,还有登录的用户)之外的任何人都可以访问它们。

我考虑过反向代理,但是由于我对这个东西很陌生(我这样做只是为了学习)并且从未尝试过实现它,所以我不完全确定这是否是可行的方法。

因此,我制作了一个插图来展示我的想法(希望它清晰易懂)。这会是解决我的问题的(唯一)正确方法吗?

一些信息:

  • Web 应用程序、Web 服务和代理服务器将位于同一台机器上
  • 我的应用程序的 URL 类似于mysite.com,而要访问 Web 服务,URL 类似于mysite.com/cgi-bin/...

在此处输入图片描述

答案1

所以显然我已经通过实施另一个解决方案解决了这个问题:HTTP Basic Auth。

我基本上遵循本指南和:

  1. 已安装 apache-utils

sudo apt-get update sudo apt-get install apache2-utils

  1. 在文件夹中创建了一个.htpasswd带有用户和密码的文件/etc/apache2

    sudo htpasswd -c /etc/apache2/.htpasswd <my_user>

  2. 通过添加以下行修改我的虚拟主机配置(在大胆的

<Directory "/usr/lib/cgi-bin/"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd AllowOverride All Options +ExecCGI -MultiViews +FollowSymLinks Order allow,deny Allow from all AddHandler fcgid-script .fcgi Require valid-user </Directory>

  1. 重启 Apache

sudo systemctl restart apache2

现在,发生了什么:

  • 如果我测试我的安全资源,输入直接 URL(例如mysite.com/cgi-bin/...)我被要求输入凭证。
  • 如果我通过我的应用程序访问,我总是被要求提供凭证

显然,一切都在 SSL/TLS 协议之下。

到目前为止一切顺利。我现在必须实现一种方法,以便在用户登录我的应用程序时不要求提供受保护资源的凭据,但这是另一个问题。

相关内容