3

我正在用 Python(在 Linux 系统上的 Apache 服务器上)编写一个需要连接到 Postgres 数据库的 Web 应用程序。因此,它需要数据库服务器的有效密码。在我的 Python 文件中硬编码密码似乎不太令人满意。

我确实想知道使用 .pgpass 文件,但它需要属于 www-data 用户,对吗?默认情况下,没有 /home/www-data 目录,这是我希望存储 .pgpass 文件的地方。我可以创建这样一个目录并将 .pgpass 文件存储在那里吗?如果不是,那么让我的 Python 脚本连接到数据库的“正确”方法是什么?

4

2 回答 2

1

将应用程序及其配置文件安装在与静态文件目录不同的自己的目录中,并且只能由应用程序用户读取。

设置另一个用户来运行应用程序并使用WSGIDaemonProcess指令。

mod_wsgi 站点快速配置指南配置指南配置指令中清楚地描述了所有这些以及更多内容

于 2013-04-09T11:29:03.850 回答
1

无论您使用哪种方法,运行 as 的其他应用程序www-data都将能够读取您的密码并以您的身份登录到数据库。使用peerauth 不会帮助你,它仍然会信任在www-data.

如果您希望您的应用程序能够将其数据与其他数据库隔离,您需要将其作为单独的用户 ID 运行。主要的方法是:

  • 使用 apache suexec 模块以单独用户身份运行脚本;
  • 使用 fast-cgi (fcgi) 或 scgi 以其他用户身份运行 cgi;或者
  • 让应用程序运行自己的最小 HTTP 服务器并为其安装 Apache 反向代理

其中,迄今为止最好的选择通常是使用 scgi/fcgi。它使您可以轻松地以不同的 unix 用户身份运行您的应用程序,但避免了反向代理的复杂性和开销。

于 2013-04-09T09:15:37.030 回答