我有一个使用PostgreSQL用Perl编写的Web应用程序。
访问PostgreSQL数据库时,我需要提供用户名和密码。为了让密码可用于系统的无人值守启动,我需要将密码嵌入我的应用程序或配置文件中,或者作为Apache中配置的环境变量。
在任何一种情况下,我都必须在某处以明文格式提供密码。
如何在真实的网站上完成?
答案 0 :(得分:6)
最安全的方法是使用配置文件,并将其放在公共文件夹之外。
答案 1 :(得分:4)
答案 2 :(得分:3)
您可以在PostgreSQL的pg_hba.conf中“信任”您的Web服务器的IP(或本地主机,如果它是同一节点),并且根本不使用密码。至少,我认为它不如将数据库密码存储在Web服务器的文件系统中那么安全。
当然,您可以尝试以某种方式加密和混淆密码。但是,通过默默无闻的这种安全性对于那些设法进入Web服务器的人来说并不是一个障碍,特别是当所有Perl源代码都可供阅读时。
答案 3 :(得分:1)
您可以将密码存储在〜/ .pgpass中(当然,对于Web服务器用户)。这在共享主机中显然不安全,其中同一用户用于许多不同的网站,但如果您有专门的设置,它通常可以很好地工作。请参阅http://www.postgresql.org/docs/current/static/libpq-pgpass.html。
重要的是将它存储在一般网络树之外。
答案 4 :(得分:0)
在PostgreSQL Server上使用防火墙 IP:端口过滤器,并限制只能访问您的网络服务器的IP。