Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python CGI脚本编写安全性_Python_Security_Cgi - Fatal编程技术网

Python CGI脚本编写安全性

Python CGI脚本编写安全性,python,security,cgi,Python,Security,Cgi,我知道CGI程序有时作为Apache用户运行。我还知道,对于CGI程序写入数据文件,可以使文件世界可写。但是,这意味着它可以被登录到服务器的其他用户写入(甚至删除),或者攻击者可以在那里安装自己的CGI程序 我想问的是,是否有一种更安全的方法允许脚本写入文件?基本原理:将CGI文件夹和数据文件夹分开 通常,cgi脚本存储在一个单独的文件夹中(通常是cgi),该文件夹是不可写的。只有特权用户(应该创建cgi脚本的用户)才具有对此文件夹的写入权限 其他文件存储在另一个文件夹中,权限更为宽松。 不过,

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

我想问的是,是否有一种更安全的方法允许脚本写入文件?

基本原理:将CGI文件夹和数据文件夹分开 通常,
cgi
脚本存储在一个单独的文件夹中(通常是
cgi
),该文件夹是不可写的。只有特权用户(应该创建
cgi
脚本的用户)才具有对此文件夹的写入权限

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


在Apache中将文件夹标记为包含CGI脚本: 脚本别名
ScriptAlias
指令允许Apache知道给定文件夹是否包含应执行的
cgi
脚本:

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
将允许Apache执行这些文件夹中的所有文件,希望这些文件是
cgi
文件

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

<Directory /usr/local/apache2/htdocs/somedir>
    Options +ExecCGI
</Directory>
将指示
cgi
脚本具有扩展名
.cgi

更多信息 你应该看一看这本书

AddHandler cgi-script .cgi