【发布时间】:2017-08-15 02:14:24
【问题描述】:
在许多由人们在家中托管的公共网页上,他们使用自己的桌面作为网络服务器。在这种设置中,我通常使用一种连接到同一台机器上的 MySQL 服务器的服务器端语言(如 php)。安装时,我总是给“root”用户一个密码,并为应用程序(php)脚本创建一个新用户和密码。因为脚本和数据库都在同一个“本地主机”上,所以我总是将允许的连接设置为只允许来自本地主机的连接,而不允许来自其他任何地方的连接。因此,“root”和其他“用户”只能在从机器内部访问时进行连接。
(单独的“root”和“user”帐户被赋予单独的权限,例如用户不能删除方案)
今天让我震惊,我为什么要在 MySQL 中设置密码?因为如果你想连接到这个数据库,你已经必须在本地机器上登录。那么,设置密码真的有必要还是只是一种多余的预防措施?
如果不是多余的预防措施,为什么不设置密码是不安全的。
(不是说这是一个很大的负担,但我必须以某种方式记住所有这些密码,使用加密系统这不是一个真正的大问题,但如果可以避免的话......)
【问题讨论】:
-
不管怎样,我看不出有什么问题。你所说的“冗余预防措施”我称之为“分层安全”。
-
很伤心,但无论哪种方式,是否有必要,是否有一种方法会出错或不设置这些密码不明智的原因(哇,这听起来真的很奇怪......有点愚蠢)
-
根据我的经验,这样的分层可以很好地防止简单的人为错误。当该系统完全迁移到共享托管解决方案时会发生什么。突然之间,您很容易受到来自该盒子/该网络中可能存在的其他任何东西的枢轴攻击。通过在每一层都采取最好的安全措施,您可以保护自己免受简单错误(以及任何潜在的尚未考虑的攻击向量)的影响。我将把它留在这里,但我相信任何进一步的讨论在 cmets 中都是不合适的,应该去聊天。
-
我不是安全专家,但从我所听到和阅读的所有内容来看,你无法真正阻止优秀/敬业的黑客。你能做的最好的就是让它不值得他们花时间。
-
安全性和便利性成反比,不能两者兼得。因此,您的问题实际上与冗余无关,而与您在哪里划定界限有关。如果您有一个包含客户财务信息的公司服务器,您可以将其放在安全方面,并处理服务器机房中 2FA 和 VPN 和旋转刀片陷阱的不便。如果您正在谈论包含您的 taco 食谱的私人家庭服务器,那么让您的 MySQL 无密码并不是什么大问题。
标签: mysql security passwords localhost webpage