CGI脚本编写安全性

时间:2012-12-12 03:30:10

标签: python security cgi

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

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

1 个答案:

答案 0 :(得分:3)

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

通常,cgi脚本存储在不能世界可写的单独文件夹(通常为cgi)中。只有特权用户(应该创建cgi脚本)才能对此文件夹具有写入权限。

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


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

的ScriptAlias

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

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

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

ExecCGI

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

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

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

AddHandler cgi-script .cgi

表示cgi脚本的扩展名为.cgi

更多信息

您应该查看Apache documentation regarding CGI script execution