我有一个使用PostgreSQL编写的Perl Web应用程序。
当访问PostgreSQL数据库时,需要提供用户名和密码。为了使系统能够无人值守地启动,我需要将密码嵌入到应用程序中、配置文件中或在Apache中配置为环境变量。
无论哪种情况,我都必须在某个地方以明文格式存储密码。
真实的Web网站是如何处理这个问题的呢?
我有一个使用PostgreSQL编写的Perl Web应用程序。
当访问PostgreSQL数据库时,需要提供用户名和密码。为了使系统能够无人值守地启动,我需要将密码嵌入到应用程序中、配置文件中或在Apache中配置为环境变量。
无论哪种情况,我都必须在某个地方以明文格式存储密码。
真实的Web网站是如何处理这个问题的呢?
当然,您可以尝试对密码进行加密和混淆。但这种安全性通过模糊化并不是真正的障碍,特别是当所有Perl源代码都可以被读取时,对于已经成功进入您的Web服务器的人来说。
你可以将密码存储在 ~/.pgpass 文件中(当然是为了网站服务器用户)。在共享主机上,同一用户用于许多不同的网站,这显然不安全。但如果你有一个专用的设置,它通常非常有效。请参见 http://www.postgresql.org/docs/current/static/libpq-pgpass.html。
重要的是将其存储在通用 Web 树之外。
在 PostgreSQL 服务器上使用防火墙IP:端口过滤器,并将访问限制为仅限于您的 Web 服务器的 IP。