3

哪些文件应该/不应该存储在 Web 服务器上的 cgi-bin 文件夹/目录中?

显然,构成 Web 应用程序、从 Web 浏览器调用的可执行脚本/文件可以存储在那里。

但是对于还有什么可以存储在那里有一个共同的行业观点吗?

是否有一个非常充分的理由为什么除了脚本/可执行文件之外什么都不允许?

我的偏好是将属于应用程序的所有文件存储在 cgi-bin 目录/文件夹中,作为它的子文件夹 - 对于每个应用程序。

例如目录 cgi-bin/myapplication 将包含:

  • cgi 脚本/可执行文件
  • 数据文件
  • 配置文件

这简化了安装,也简化了并行运行不同版本应用程序的步骤,例如试用新版本。

可以通过使用正确的用户权限以及 Apache .htaccess 来控制对目录和文件的访问来解决有关对非脚本文件的安全访问的问题。

似乎流行的免费应用程序都支持这种所有内容都在一个目录下的方法:bugzilla 的版本,免费的缺陷和功能跟踪工具,例如 3.4.4,以这种结构提供,而早期版本,例如 2 .x 将 bugzilla 组件安装到至少三个文件夹。

Drupal,强大且流行的免费内容管理系统,也采用了这个目录下所有内容的方法,虽然它不使用 cgi-bin 文件夹,但方法是一样的。

你怎么认为?

4

1 回答 1

4

cgi-bin 文件夹没有什么特别之处。它就像任何具有“允许脚本”标志集(或您的 Web 服务器的等效项)的可公开访问的 Web 文件夹一样 - 在 PHP/JSP 等领域几乎变得毫无意义。

您应该只将您希望公开的文件存储在您的 webroot 下的任何文件夹中。您可能不希望 Internet 上的任何用户都可以下载您的数据和配置,因此不要将它们保存在 /cgi-bin

如果需要,某些服务器可能会尝试执行 /cgi-bin 中的任何文件。这可能会导致问题,尤其是当文本或数据文件作为 shell 脚本执行时。

Drupal 之类的应用程序旨在让任何人都可以轻松安装,无论他们在其网络主机上可能拥有什么权限。这是它将所有内容保持在一起的主要原因。如果您有能力将文件放在您想要的位置,那么将非公共文件保留在 webroot 之外始终是一个好习惯。如果您必须将它们保存在 webroot 下,请确保使用服务器的配置来拒绝对非公共文件的公共访问。

于 2009-12-16T13:09:14.243 回答