Security 在web应用程序中处理数据库连接的(最)安全方式是什么?
我有一个使用PostgreSQL用Perl编写的web应用程序 访问PostgreSQL数据库时,我需要提供用户名和密码。为了使密码可用于无人值守的系统启动,我需要将该密码嵌入到我的应用程序或配置文件中,或作为Apache中配置的环境变量 无论哪种情况,我都必须在某个地方有明文格式的密码Security 在web应用程序中处理数据库连接的(最)安全方式是什么?,security,postgresql,Security,Postgresql,我有一个使用PostgreSQL用Perl编写的web应用程序 访问PostgreSQL数据库时,我需要提供用户名和密码。为了使密码可用于无人值守的系统启动,我需要将该密码嵌入到我的应用程序或配置文件中,或作为Apache中配置的环境变量 无论哪种情况,我都必须在某个地方有明文格式的密码 在真实的网站中是如何做到的?最安全的方法是拥有一个配置文件,并将其放在公共文件夹之外。您可以在PostgreSQL中“信任”您的web服务器的IP(或本地主机,如果它是同一个节点的话),而不使用任何密码。至少,
在真实的网站中是如何做到的?最安全的方法是拥有一个配置文件,并将其放在公共文件夹之外。您可以在PostgreSQL中“信任”您的web服务器的IP(或本地主机,如果它是同一个节点的话),而不使用任何密码。至少,我不认为它比将数据库密码存储在Web服务器的文件系统中更安全
当然,您可以尝试以某种方式加密和混淆密码。但是,对于那些设法进入您的Web服务器的人来说,这种默默无闻的安全性并不是真正的障碍,尤其是当所有的Perl源代码都在那里可以阅读时。您可以将密码存储在~/.pgpass中(当然,对于Web服务器用户)。这在共享主机中显然是不安全的,在共享主机中,相同的用户被用于许多不同的网站,但是如果你有专门的设置,它通常工作得很好。看 重要的是将其存储在通用web树之外。
- 确保密码位于web服务器永远无法提供服务的位置。如果可能,将其放在webroot之外;如果不可能的话
- 确保包含密码的文件只能由web服务器运行时的用户读取,而不能由任何人写入
- 定期旋转,以尽量减少泄漏时的影响
- 确保您使用的数据库用户具有最低权限。例如,对于Wordpress安装,创建一个只供Wordpress使用的帐户,并且只允许它访问它实际需要的数据库
- 将数据库配置为仅接受来自web服务器的连接,通过防止攻击者仅从网络上的任何旧随机节点使用该密码,将泄漏的影响降至最低