cgi-bin目录内容:除了CGI脚本/可执行文件之外还可以存储什么?

时间:2009-12-16 10:56:51

标签: security file policy cgi-bin

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

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

但是有没有其他可以存储的行业意见?

为什么除了脚本/可执行文件之外没有其他任何东西可以存在?

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

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

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

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

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

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

Drupal,功能强大且流行的免费内容管理系统也采用了这种方法 - 在一个目录下,尽管不使用cgi-bin文件夹,但方法是相同的。

你有什么想法?

1 个答案:

答案 0 :(得分:3)

cgi-bin文件夹没有什么特别之处。它就像任何可公开访问的Web文件夹,其中设置了“allow-script”标志(或Web服务器的等效标记) - 这在PHP / JSP等世界中几乎毫无意义。

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

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

Drupal等应用程序旨在让任何人都可以轻松安装,无论他们在Web主机上拥有哪些权限。这是它将所有东西放在一起的主要原因。如果您能够将文件放在所需的位置,那么将非公共文件保留在webroot之外始终是一种好习惯。如果必须将它们保留在webroot下,请确保使用服务器的配置拒绝公共访问非公共文件。