解决 Python 的共享服务器安全问题
Posted
技术标签:
【中文标题】解决 Python 的共享服务器安全问题【英文标题】:Solving the shared-server security problem for Python 【发布时间】:2010-09-19 01:46:57 【问题描述】:所以我的小组正在尝试为各种不同的 Web 服务建立一个共享服务器环境。我想我们已经决定在php.ini
和php_admin_value
中设置disable_functions
和disable_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组共享权限的问题