备份&生产中MySQL / PHP应用程序的安全注意事项

时间:2017-11-18 15:16:41

标签: php mysql security backup production-environment

除此之外的一些具体问题:

1)您最重要的安全考虑因素是什么?我觉得我已经通过加密/ https保护传输中的数据,通过加密我不需要访问的敏感数据来保护静态数据,设置防火墙以访问phpmyadmin,更改root密码等。但是我并不相信我已经检查了所有的方框'可以这么说。是否有一个强大的指南来保护mysql / php应用程序在那里?也许笔测试是在某种程度上获得信心的唯一方法吗?

2)您的备份注意事项是什么?我在两个不同的数据中心中为mysql数据库设置了主/从关系,并且每周备份一次生产服务器本身。代码全部都在源代码管理中,但我有一些上传的文件,如果整个事情在备份后第6天崩溃,我就会丢失。关于那个的任何想法?考虑将文档存储移动到不同的服务器并在夜间备份,或者异步将文档保存在初始上载到两个单独的服务器上。它们不是大型文档,而且数量还不高,但是,它是可扩展的吗?

1 个答案:

答案 0 :(得分:0)

  

我觉得我已经通过加密/ https

保护了传输中的数据

目前还不清楚你走了多远,所以请原谅我,如果你已经解决了以下问题。

显然,https可以保护客户端与Web服务器之间的数据传输,但不应将其与应用程序和数据库之间的加密连接混淆。无可否认,此处拦截数据的风险因素要低得多,但这取决于数据的敏感程度。可以找到有关设置加密数据库连接的信息here。当您在数据中心之间进行复制时,您也应该考虑setting up replication to use encrypted connections

复制和备份不是一回事,一旦将数据从主服务器复制到从服务器,您仍然需要备份从服务器。您可以使用mysqldump,但需要注意的是mysqldump创建逻辑备份而不是物理备份,因此恢复功能很慢,并且不利于可扩展性。有一个很好的帖子here提供了用于进行物理备份的解决方案。

除此之外,您应该在任何系统中实施通常的安全措施:

  • 使用,为每个流程创建和分配单独的用户帐户 执行其功能所需的最低访问权限级别。
  • 使用非通用管理员类型用户名创建管理员帐户。 删除root帐户以及可能会让您失意的其他帐户 比如admin
  • 如果您需要再次解密数据,则只加密数据。盐 和哈希敏感数据,只有验证才需要 (密码等)并将结果值保存在数据库中。根据哈希验证用户输入。

根据您的使用情况,您还可以考虑:

  • 在mysqld部分的/etc/mysql/my.cnf中,您可以禁用 通过添加来连接本地机器以外的任何地方 bind-address = 127.0.0.1
  • 禁止从本地文件系统将文件加载到MySQL中 没有文件级权限的用户,只需添加local-infile=0
  • 即可
  • 为常见数据库任务实施stored procedures。这些 有几个好处(以及一些缺点),但从a 安全性观点,因为您可以授予用户帐户权限 存储过程而不授予对表的任何权限 他们利用了。
  • 使用database views限制对其中某些列的访问 表仍然允许访问同一列中的其他列 表。与存储过程一样,视图也有利弊。

可能还有一百万个其他东西,比我更了解MySQL的人可能会在没有考虑的情况下向你发出信号,但这就是我所拥有的。