单独的数据库是否有登录信息和关键任务信息?

时间:2012-02-29 00:13:20

标签: php mysql database security

我正在构建一个处理高度敏感数据的Web应用程序。我提高安全性的想法是创建一个用于登录信息的数据库,以及一个包含敏感数据的完全独立的数据库。安全数据库的身份验证将依赖于通过登录数据库进行的两部分身份验证,以及敏感数据库中用户帐户的验证。

我的问题是:那里有更好的解决方案吗?如果我在一台服务器上维护这两个数据库,是否存在重大安全漏洞?是否更值得维护单个数据库,只是加密安全数据库的内容?加密安全数据库的内容并通过配置文件中的其他用户/传递单独验证对它的访问权限是否过度?

希望这是有道理的。感谢。

3 个答案:

答案 0 :(得分:2)

安全就像一条链条。最薄弱的环节是整个事情发生的地方。

因此,使用一个或多个数据库并不重要。您需要两者都是安全的,以确保整个系统的安全。

答案 1 :(得分:1)

这取决于您的Web应用程序最可能的攻击媒介。如果SQL注入对您的应用程序构成风险,如果用户可以合法登录,那么拥有单独的数据库将无济于事,然后欺骗您的应用程序以读取他们已有权访问的表中的其他记录。

一种方法是使用每个用户的唯一加密密钥加密每条记录。这样,如果他们确实妥协了一个用户帐户,那么其他行将是乱码。这非常慢,但如果信息 敏感,您可能不得不忍受。

另一种方法是不要让web-app直接查询敏感信息。你有你的网络应用程序&在DMZ中运行的非敏感数据库,以及在防火墙后面运行的敏感数据库将其与DMZ分开。然后,您可以使用Web服务或严格限制的数据库角色来根据需要获取数据。然后在您的Web服务/数据库端,确保代码只能传递登录用户可以看到的记录。

答案 2 :(得分:1)

您应该查看用于存储信用卡信息的PCI合规性标准。实施真的很痛苦,但值得。如果你没有存储信用卡或类似的东西,你可能会削减一些角落。

由于真正安全的解决方案需要组合设置:硬件,软件和网络,因此没有“解决方案”。

http://www.pcicomplianceguide.org/merchants-20071022-gaining-pci-compliance.php