解决 Python 的共享服务器安全问题

Posted

技术标签:

【中文标题】解决 Python 的共享服务器安全问题【英文标题】:Solving the shared-server security problem for Python 【发布时间】:2010-09-19 01:46:57 【问题描述】:

所以我的小组正在尝试为各种不同的 Web 服务建立一个共享服务器环境。我想我们已经决定在php.iniphp_admin_value 中设置disable_functionsdisable_classes 站点范围,以在每个应用程序的httpd.conf 中强制open_basedir 用于 php 脚本,乘客的 user switching 用于 ruby​​ 脚本。

不过,我们仍然需要为 python 找到一些东西。乘客确实支持 python,但不支持特定子目录的每个应用程序的安全性(在域级别是全有或全无)。

有什么建议吗?

(如果前面的任何一个没有意义 - 好吧,我是应该设置 python 支持的人,而不是设置 php 或 ruby​​ 支持的人,所以还有一些“和然后一些神奇的事情发生了”从我的角度来看步骤)。

【问题讨论】:

【参考方案1】:

嗯,有一个名为virtualenv 的系统允许您在一种安全的环境中运行 Python,并即时配置/加载/关闭这些环境。我对此了解不多,但您应该认真研究一下;这是它网页上的描述(只需谷歌它,你就会找到它):

要解决的基本问题是依赖关系和版本之一,以及间接权限。想象一下,您有一个应用程序需要 LibFoo 版本 1,但另一个应用程序需要版本 2。您如何同时使用这两个应用程序?如果您将所有内容都安装到 /usr/lib/python2.4/site-packages(或任何您平台的标准位置),很容易导致您无意中升级不应升级的应用程序。

或者更一般地说,如果您想安装一个应用程序并让它保持不变,该怎么办?如果应用程序正常工作,其库或这些库版本的任何更改都可能破坏应用程序。

另外,如果您无法将包安装到全局站点包目录中怎么办?例如,在共享主机上。

在所有这些情况下,virtualenv 都可以为您提供帮助。它创建了一个有自己的安装目录的环境,它不与其他 virtualenv 环境共享库(并且可选地也不使用全局安装的库)。

【讨论】:

您在 virtualenv 上下文中提到的“安全环境”只是代码安全的。它只注意在 venv 中运行的脚本使用正确的 Python 解释器和库,它不会强制问题中提到的任何安全“策略”。

以上是关于解决 Python 的共享服务器安全问题的主要内容,如果未能解决你的问题,请参考以下文章

Python 使用CORS跨域资源共享解决flask服务器跨域问题浏览器同源策略

用局域网文件共享系统实现共享文件夹安全设置

Windows Server 2012 administrators组共享权限的问题

基于远程服务器的共享文件实现

解决非administrator登陆客户端访问网络共享不用输用户名密码的问题

根据安全权限设置共享中所有文件夹的共享权限