2017-03-08 92 views
0

因此,这与代码本身较少有关,更多的是关于效率和实用性。 在我以前的工作中,我们有多个数据库。一种可以通过公共手段访问,一种只能私下访问。公共数据库本质上可以显示私人数据库所做的一切,而且他们几乎同步,每隔2分钟左右更新一次。 他们的想法是,如果公共数据库被某种类型的SQL注入或其他恶意破坏数据库的破坏,它不会损害生产,并且可以立即恢复。SQL双重数据库安全

但是,这是一个非常小规模的操作,一次只有大约100人访问数据库,如果发生任何不良事件,我肯定有人不得不手动进入并恢复数据库以解决问题。

我的问题是,这是一种正确的做事方式吗?这种策略何时会开始变得令人难以置信的低效率?假设如果每天有数以万计的查询会不可维护?

感谢您的洞察力。

+1

“这是一种正确的做事方式吗?” - 可能不会。不要直接暴露数据库。放置一个许可的API;至少只读视图。也不要混合使用OLTP和OLAP问题。 –

+0

*公共数据库*总是一个坏主意。但是:如果您的公共数据库受SQL注入影响,那么您的私有数据库也是如此 - 因为不知何故,数据必须到达那里,不是吗?此外,而不是数据销毁,这可以通过**备份**来减轻,您应该更担心数据泄漏。所以你的大部分努力都应该让你的**代码安全**和你的数据库**不公开** –

回答

0

第一道防线必须是已经访问过数据库的软件,有很多方法可以防止SQL注入,比如使用SP,发送参数而不是查询,... 虽然如果系统的用户是提供拥有私有数据库的数据(比如这个论坛)并不比拥有数据库副本(你说每2分钟同步一次,公共私有数据库中的任何更改也会改变私有数据库)要好。您可以以不同的时间间隔拥有不同的数据副本,并且随时可以在任何情况发生时回滚到合适的数据副本。

我曾经为一家银行工作,他们在磁带上复制!这是一个只写一次/只读磁带,以防比sql注入更大的事情发生!