1

我知道 CGI 程序有时以 Apache 用户的身份运行。我还知道,对于要写入数据文件的 CGI 程序,您可以使该文件成为世界可写文件。然而,这意味着它可以被其他登录到服务器的用户写入(甚至删除),或者攻击者可以在那里安装他们自己的 CGI 程序。

我要问的是有没有更安全的方法来允许脚本写入文件?

4

1 回答 1

3

基本原理:单独的 CGI 文件夹和 Data 文件夹

通常,cgi脚本存储在一个不可全局写入的单独文件夹(通常是cgi)中。只有特权用户(应该创建脚本)才能对此文件夹进行写访问。cgi

其他文件存储在另一个文件夹中,权限更宽松。
不过,让它在世界范围内可写也不是一个好主意。只有有理由访问该文件夹的用户才能访问它。


在 Apache 中将文件夹标记为包含 CGI 脚本:

脚本别名

ScriptAlias指令允许 Apache 知道给定文件夹是否包含cgi应执行的脚本:

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/

会让 Apache 执行这些文件夹中的所有文件,期望那些是cgi文件。

执行CGI

您可以使用以下命令授予 Apache 执行cgi特定文件夹中脚本的权限ExecCGI Option

<Directory /usr/local/apache2/htdocs/somedir>
    Options +ExecCGI
</Directory>

然后,您还需要指出如何将cgi脚本与另一个文件区分开来,这是使用Directive完成AddHandler。使用:

AddHandler cgi-script .cgi

将表明cgi脚本具有扩展名.cgi

更多信息

您应该查看有关 CGI 脚本执行的 Apache 文档

于 2012-12-12T03:35:29.117 回答