如何在数据库中安全地存储密码

时间:2019-07-16 17:52:04

标签: php mysql security ssh password-encryption

目前,我正在从事php项目。项目的主要主题是通过ssh登录到我的本地网络中的某些Cisco交换机,获取详细信息并将其填充给用户。 为此,我在MySQL中的数据库上创建了包含交换机登录凭据的数据库。我的PHP代码将从数据库中获取登录凭据,并在switch上进行计算。

我的问题是我如何安全地将交换机凭据存储在我的MySQL数据库中,以使其免受任何安全漏洞的侵害。

1 个答案:

答案 0 :(得分:2)

您希望以某种形式将cisco交换机密码存储在数据库中,您可以在其中恢复密码纯文本以用于ssh连接。

即使您加密了数据库中的密码,访问数据库的程序也必须能够解密它们才能使用它们。因此解密密钥必将对您的程序可用。这与password-hashing mechanism available in php的类型完全不同。密码哈希不允许您从哈希中恢复密码,只能将用户提供的密码与哈希密码进行比较以查看它们是否匹配。

存储可解密密码不安全,并且从不安全。如果有人破解您的服务器,那么他们就可以访问您的整个基础架构。 (可以访问交换机和路由器的网络蠕虫确实会造成混乱。)https://KrebsOnSecurity.com中会出现这种情况。 不要这样做。请。

如果您希望通过ssh或多或少地自动访问交换机,最好的选择是使用ssh的密钥管理功能。您从中访问交换机的机器将具有一个私钥,并且每个交换机将具有一个与私钥相对应的公钥。如果正确配置了公共密钥,则可以限制提供相应公共密钥的用户可以使用的操作。这是一个很大的话题,对于堆栈溢出的答案来说太大了。

与往常一样,Digital Ocean撰写的有关此主题的文章很有用。 https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server