首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隔离沙箱环境

隔离沙箱环境
EN

Stack Overflow用户
提问于 2014-12-02 02:23:57
回答 1查看 60关注 0票数 0

对于使用沙箱模式的网站,如支付站点,是使用单独的数据库,还是使用相同的数据库?

我正在研究生产和沙箱环境的两个模式。以下是两种选择。

选项1:

  • 克隆数据库,基于sandbox模式将请求路由到正确的数据库。

选项2

  • 单个数据库,“主表”有一个is_sandbox布尔值。

每种方法的优缺点是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 03:22:55

在大多数情况下,您可能希望保留两个独立的数据库。没有充分的理由将这两者混合在同一个数据库中,而且有很多很好的理由可以将它们分开:

  • 跟踪哪个实体在哪个“领域”(生产与沙箱)是您的代码的额外工作,您可能需要将它包含在很多地方。
  • 您还需要数据库模式中的逻辑。例如,UNIQUE索引都必须包括领域。
  • 如果您忘记了这些代码中的任何一个,您就会发现自己存在潜在的安全漏洞。恶意用户可能导致来自一个领域的数据影响另一个领域。取决于您的应用程序是什么,这可能是从烦人到可怕的任何地方。(例如,如果它是一个支付应用程序,那么潜在的后果是极其可怕的:“假装”沙箱中的钱可以转换成真实的货币!)
  • 即使您的代码都是完美的,也会不可避免地在各个领域之间泄露一些信息。例如,如果您的应用程序使用任何顺序标识符(例如,AUTO_INCREMENT中的MySQL ),那么沙箱中所看到的值之间的差距将与生产中使用的值相对应。不过,这件事是否重要还有待商榷。

使用两个单独的数据库巧妙地解决了所有这些问题。这也意味着,您可以轻松地清理沙箱时,需要。

例外:如果您的应用程序是一个几乎完全公开的网站(例如,堆栈溢出或维基百科),或者涉及到沙箱(如Facebook)中难以复制的社会方面,则更集成的沙箱可能更有意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27240864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档