【问题标题】:is a password necessary if mysql only allows connections from localhost如果 mysql 只允许来自 localhost 的连接,则需要密码
【发布时间】:2017-08-15 02:14:24
【问题描述】:

在许多由人们在家中托管的公共网页上,他们使用自己的桌面作为网络服务器。在这种设置中,我通常使用一种连接到同一台机器上的 MySQL 服务器的服务器端语言(如 php)。安装时,我总是给“root”用户一个密码,并为应用程序(php)脚本创建一个新用户和密码。因为脚本和数据库都在同一个“本地主机”上,所以我总是将允许的连接设置为只允许来自本地主机的连接,而不允许来自其他任何地方的连接。因此,“root”和其他“用户”只能在从机器内部访问时进行连接。

(单独的“root”和“user”帐户被赋予单独的权限,例如用户不能删除方案)

今天让我震惊,我为什么要在 MySQL 中设置密码?因为如果你想连接到这个数据库,你已经必须在本地机器上登录。那么,设置密码真的有必要还是只是一种多余的预防措施?

如果不是多余的预防措施,为什么不设置密码是不安全的。

(不是说这是一个很大的负担,但我必须以某种方式记住所有这些密码,使用加密系统这不是一个真正的大问题,但如果可以避免的话......)

【问题讨论】:

  • 不管怎样,我看不出有什么问题。你所说的“冗余预防措施”我称之为“分层安全”。
  • 很伤心,但无论哪种方式,是否有必要,是否有一种方法会出错或不设置这些密码不明智的原因(哇,这听起来真的很奇怪......有点愚蠢)
  • 根据我的经验,这样的分层可以很好地防止简单的人为错误。当该系统完全迁移到共享托管解决方案时会发生什么。突然之间,您很容易受到来自该盒子/该网络中可能存在的其他任何东西的枢轴攻击。通过在每一层都采取最好的安全措施,您可以保护自己免受简单错误(以及任何潜在的尚未考虑的攻击向量)的影响。我将把它留在这里,但我相信任何进一步的讨论在 cmets 中都是不合适的,应该去聊天。
  • 我不是安全专家,但从我所听到和阅读的所有内容来看,你无法真正阻止优秀/敬业的黑客。你能做的最好的就是让它不值得他们花时间。
  • 安全性和便利性成反比,不能两者兼得。因此,您的问题实际上与冗余无关,而与您在哪里划定界限有关。如果您有一个包含客户财务信息的公司服务器,您可以将其放在安全方面,并处理服务器机房中 2FA 和 VPN 和旋转刀片陷阱的不便。如果您正在谈论包含您的 taco 食谱的私人家庭服务器,那么让您的 MySQL 无密码并不是什么大问题。

标签: mysql security passwords localhost webpage


【解决方案1】:

您帖子中的 cmets 大多对此进行了总结,但据我所知,这被称为“纵深防御”(参见 12)。深度防御基本上是为了避免在您的项目中出现单点故障 - 如果您的网络服务器受到威胁,那么使用弱密码意味着您只是免费提供数据库。这相当于有人闯入你的房子,发现你把保险箱放在厨房的桌子上并打开了它。

如果您要托管一个面向外部的网站,并且希望获得大量流量,那么尽可能确保其安全是一个好主意,除非您特别喜欢恶意用户可以直接访问您的家庭网络的想法.也就是说,如果您期望获得大量流量,我强烈建议您在其他地方托管您的网站 - 您可能会发现您的家庭互联网速度因此受到很大影响。

【讨论】:

    猜你喜欢
    • 2013-03-29
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2011-08-25
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    相关资源
    最近更新 更多