Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/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
PHP脚本在Linux上连接到本地PostgreSQL实例的最安全方式是什么?_Php_Postgresql - Fatal编程技术网

PHP脚本在Linux上连接到本地PostgreSQL实例的最安全方式是什么?

PHP脚本在Linux上连接到本地PostgreSQL实例的最安全方式是什么?,php,postgresql,Php,Postgresql,我认为,如果我授予apache用户适当的权限,并使用ident身份验证方法,这将使连接更加安全,因为这样密码就不需要存储在连接字符串中(如果出现PHP错误或Apache配置错误,并且PHP代码意外发送到客户端,则可能会泄漏) 另外,连接的安全性也取决于主机系统的安全性。我禁用了通过ssh的root登录,只允许公钥身份验证,因此我认为它非常安全 这是否有任何显著的安全好处,或者只是一厢情愿?如果您的DB只在本地主机上侦听,那么这有必要吗那么你如何对它进行身份验证就没有多大区别了。如果攻击者闯入,他

我认为,如果我授予apache用户适当的权限,并使用
ident
身份验证方法,这将使连接更加安全,因为这样密码就不需要存储在连接字符串中(如果出现PHP错误或Apache配置错误,并且PHP代码意外发送到客户端,则可能会泄漏)

另外,连接的安全性也取决于主机系统的安全性。我禁用了通过ssh的root登录,只允许公钥身份验证,因此我认为它非常安全


这是否有任何显著的安全好处,或者只是一厢情愿?如果您的DB只在本地主机上侦听,那么这有必要吗那么你如何对它进行身份验证就没有多大区别了。如果攻击者闯入,他们很可能会通过公共服务闯入……在你的例子中是Apache/PHP。在这种情况下,他们将通过你使用的任何身份验证方法访问DB,因为他们可以访问你的Apache/PHP安装程序可以访问的任何内容

更重要的是确保您的应用程序不允许任意SQL通过,或允许SQL注入、远程代码包含等,从而使攻击者无法访问主机

无论如何,我更喜欢使用
md5
,因为当他们无法从127.0.0.1以外的任何地方连接时,如果密码被盗,密码就没有价值,这意味着他们必须努力从脚本中提取密码(或升级密码)为了进入数据库,如果他们真的设法利用web服务器或在其上运行的脚本进行攻击。仅仅将ident作为Apache是不够的


更重要的是,它允许您按应用程序划分访问权限,因此您在一个醉酒的周末编写的MyTicketTracker作为SQL注入工具无法访问与CriticalAccounting应用程序相同的DBs。它无法阻止已确定的攻击者,但可能会使偶然的攻击者慢一点。

公钥身份验证on肯定会有一个安全优势,基本上没有现实的方法来强制登录。关于ident,优势并不明显,如果有人访问了连接字符串,他们很可能会访问该帐户。@JoachimIsaksson:这是否意味着如果postgres只在127.0.0.1上收听,基本上就没有了不管我使用什么身份验证方法?也许我应该补充一点,如果您的数据库可以由internet上的任何主机连接,那么ident比无用的更糟糕(!),因为它基本上意味着“任何告诉我他们已通过身份验证的客户端都可以连接。”@JoachimIsaksson:谢谢,我认为它只适用于本地身份验证的用户。看起来我应该更仔细地阅读文档:)您可能想阅读“TCP/IP上的身份验证”部分:)谢谢。我非常小心地在代码中只使用准备好的语句,所以,希望SQL注入不会发生。