Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在web应用程序中处理数据库连接的(最)安全方式是什么?_Security_Postgresql - Fatal编程技术网

Security 在web应用程序中处理数据库连接的(最)安全方式是什么?

Security 在web应用程序中处理数据库连接的(最)安全方式是什么?,security,postgresql,Security,Postgresql,我有一个使用PostgreSQL用Perl编写的web应用程序 访问PostgreSQL数据库时,我需要提供用户名和密码。为了使密码可用于无人值守的系统启动,我需要将该密码嵌入到我的应用程序或配置文件中,或作为Apache中配置的环境变量 无论哪种情况,我都必须在某个地方有明文格式的密码 在真实的网站中是如何做到的?最安全的方法是拥有一个配置文件,并将其放在公共文件夹之外。您可以在PostgreSQL中“信任”您的web服务器的IP(或本地主机,如果它是同一个节点的话),而不使用任何密码。至少,

我有一个使用PostgreSQL用Perl编写的web应用程序

访问PostgreSQL数据库时,我需要提供用户名和密码。为了使密码可用于无人值守的系统启动,我需要将该密码嵌入到我的应用程序或配置文件中,或作为Apache中配置的环境变量

无论哪种情况,我都必须在某个地方有明文格式的密码


在真实的网站中是如何做到的?

最安全的方法是拥有一个配置文件,并将其放在公共文件夹之外。

您可以在PostgreSQL中“信任”您的web服务器的IP(或本地主机,如果它是同一个节点的话),而不使用任何密码。至少,我不认为它比将数据库密码存储在Web服务器的文件系统中更安全


当然,您可以尝试以某种方式加密和混淆密码。但是,对于那些设法进入您的Web服务器的人来说,这种默默无闻的安全性并不是真正的障碍,尤其是当所有的Perl源代码都在那里可以阅读时。

您可以将密码存储在~/.pgpass中(当然,对于Web服务器用户)。这在共享主机中显然是不安全的,在共享主机中,相同的用户被用于许多不同的网站,但是如果你有专门的设置,它通常工作得很好。看

重要的是将其存储在通用web树之外。

  • 确保密码位于web服务器永远无法提供服务的位置。如果可能,将其放在webroot之外;如果不可能的话
  • 确保包含密码的文件只能由web服务器运行时的用户读取,而不能由任何人写入
  • 定期旋转,以尽量减少泄漏时的影响
  • 确保您使用的数据库用户具有最低权限。例如,对于Wordpress安装,创建一个只供Wordpress使用的帐户,并且只允许它访问它实际需要的数据库
  • 将数据库配置为仅接受来自web服务器的连接,通过防止攻击者仅从网络上的任何旧随机节点使用该密码,将泄漏的影响降至最低

在PostgreSQL Server上使用防火墙IP:port筛选器,并限制对web服务器IP的访问。

如果有人能够读取您服务器上的密码,您已经丢失了。Alexandr:抱歉,您完全错了;这是一种非常幼稚的安全方法。+1,很好的列表,但您忘记了一个:将数据库配置为仅接受来自web服务器的连接,通过防止攻击者仅从网络上的任何旧随机节点使用该密码来最小化泄漏的影响。是的,这似乎太明显了,不值得一提-但是,其他人在某些方面也是如此。我已将帖子设置为社区维基,并添加了您的建议:)