如何加密mysql中的某些表

时间:2016-04-27 01:44:05

标签: java mysql encryption

目前我正在做父门户网站(父母可以监控孩子的学校活动)。

我想加密数据库中的某些表,例如children result,以便任何人都无法访问它。由于我缺乏数据库知识,我想不出加密的方法。

有知识的人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

从我的观点来看,你基本上要问的是

  

我有这个包含敏感信息的数据库......我不相信它

首先,您应该停下来并重新评估您的推理。你为什么不相信你的数据库?然后,您应该更改基础架构,以便使用已由数据库开发人员或其他第三方构建的工具,使用敏感信息信任您的数据库。

如果您的回答是您实际上非常信任您的数据库,但您想要一个并非真正需要的额外保护层,那么这是您可能所做的一个非常基本的示例

在继续之前

  

如果你进行加密,你几乎可以保证出错   自己。

以下示例也不例外,它有很多问题。您应该知道此示例具有在生产环境中无法接受的漏洞,这是一个让您入门的基本建议。如果您要追求加密的数据库字段,那么您应该得到一些专业的帮助。这不是一件容易接受的事情......你已被警告过了。

  1. 确定哪些数据(表格列)是敏感的。个人信息,财务记录等。
  2. 确保您不需要根据这些列进行排序(如果在数据库中加密了children.first_name列,ORDER BY children.first_name将无效)
  3. 以适当的方式更改字段的数据类型(如果它们是整数字段,那么您将需要将它们更改为TEXT或其他一些CHAR字段)
  4. 在您的应用程序中,在写入数据库时​​加密字段,在阅读时解密它们:使用AES256和随机生成的密钥,保持非常安全。您甚至可以查看Hashicorp Vault之类的工具,以便在运行时以编程方式检索此密钥。这样,密钥永远不会持久保存到应用程序服务器的硬盘驱动器中,而只是保存在内存中。
  5. 现在你已经理论上将服务的攻击面限制在你的应用程序服务器上,理论上使任何人都很难从数据库中提取数据他们手上的数据。再次问“为什么我不信任我的数据库?怎么能有人掌握这些数据?”然后从那里开始。

    请记住,密码应为哈希和盐渍,未加密