我目前正在从事一个将收集大量客户敏感数据的项目。出生日期、社会保障号、信用记录和其他个人数据。
这些数据全部由一个网站使用,该网站会生成包含个人数据的 PDF 格式的文档。显然,如果客户的用户名和密码被泄露,他们的个人信息就会面临风险,但我该怎么做才能保护数据库不被泄露呢?
我是否应该加密数据库中的 PDF 文档和其他信息?随着用户数量的增加,这是否会导致严重的性能问题?
将数据库服务器放在公共 Web 服务器访问的专用网络上是否足够?
我正在使用 MySQL
答案1
以下是“PCI 最佳实践”的链接
http://www.appsecinc.com/solutions/pci/index.shtml
PCI 是接受信用卡的公司必须遵守的标准,并且通常是值得遵循的良好做法。
其中一些关键点如下:
- 服务器周围的物理安全性需要非常好
- 所有进出服务器的数据都应加密
- 服务器应位于防火墙后面,并且只能从有限数量的机器访问
- 使用加密文件系统,对于非常敏感的数据,加密数据库中的各个数据块
- 将远程访问限制为仅需要最少数量的系统管理员
如果您阅读该网站上的某些文档,它会为您提供更多信息。
答案2
您当然应该将数据库置于防火墙后面,仅供 Web 服务器访问。为什么要将其暴露在不必要的地方呢?
至于加密……只要您的访问要求不会使其变得毫无用处,那就很好了。理想情况下,您可以将 SQL 数据存储为您知道的密钥加密,并且任何生成的文档都将加密到客户端的密钥。