我正在构建一个web应用程序,它将处理高度敏感的数据。我关于提高安全性的想法是为登录信息创建一个数据库,并创建一个包含敏感数据的完全独立的数据库。安全数据库的身份验证将依赖于通过登录数据库的两部分身份验证和敏感数据库中用户帐户的验证。
我的问题是:有没有更好的解决方案?如果我在一台服务器上同时维护这两个数据库,是否存在重大的安全缺陷?维护单个数据库但只加密安全数据库的内容是否更有价值?对安全数据库的内容进行加密,并通过配置文件中的不同用户/pass对其进行单独的身份验证访问,这是不是有点过分了?
希望这是有意义的。谢谢。
发布于 2012-02-29 08:22:55
这取决于您的web应用程序最可能的攻击载体。如果SQL注入对你的应用程序来说是一个风险,那么如果用户可以合法登录,然后欺骗你的应用程序读取他们已经有权访问的表中的其他记录,那么拥有单独的数据库将没有任何帮助。
一种方法是对每个用户使用唯一的加密密钥加密每条记录。这样一来,如果他们确实泄露了一个用户帐户,其他行将是胡言乱语。这是非常慢的,但如果信息是对敏感的,您可能不得不接受这种情况。
另一种方法是不让敏感信息直接被web-app查询。您的web应用程序和非敏感数据库在DMZ中运行,而敏感数据库运行在将其与DMZ隔开的防火墙后面。然后,您可以使用web服务或严格限制的数据库角色来根据需要获取数据。然后,在您的web服务/数据库端,您要确保代码只能提供登录用户有权查看的记录。
发布于 2012-02-29 09:53:47
安全就像一条链条。最薄弱的一环就是整个系统崩溃的地方。
因此,使用一个或多个数据库并不重要。您需要两者都是安全的,才能保证整个系统的安全。
发布于 2012-02-29 10:56:35
您应该研究用于存储信用卡信息的PCI遵从性标准。这是一个真正的痛苦实现,但值得一试。如果你没有存储信用卡或类似的东西,你也许可以走捷径。
没有“解决方案”,因为一个真正安全的解决方案需要设置的组合:硬件,软件和网络。
http://www.pcicomplianceguide.org/merchants-20071022-gaining-pci-compliance.php
https://stackoverflow.com/questions/9491824
复制相似问题