【问题标题】:adding a forum: sharing a database or creating a new one?添加论坛:共享数据库还是创建新的?
【发布时间】:2011-04-21 01:41:42
【问题描述】:

我的网站有一个包含大约 50 个表的 MySQL 数据库。我努力使其尽可能安全可靠。

根据我们的发展计划,我们将在不久的将来增加一个论坛。

我不确定是将论坛放在自己的数据库中,还是将其所有表插入我们现有的数据库中更好。根据我的理解,我在下面列出了这两种方法的优缺点,并希望得到比我更有知识和经验的人的一些建议,这几乎是你们所有人:-)

合并到现有数据库中

优点

  • 将论坛数据集成到现有网站更容易(例如:使用论坛主题标签将主题与网站页面匹配并自动显示相关讨论的链接)
  • 可以将现有用户表合并到论坛中,因此用户无需重新注册即可开始使用论坛
  • 多合一备份

缺点

  • 我立即添加了大量新代码,其中一些具有数据库访问权限,所有这些都是恶作剧的高调目标,这意味着我的原始数据库现在面临更大的攻击风险李>
  • 更新论坛软件将更加亲力亲为,因为它不会直接导致数据库失败

论坛和主站点的独立数据库

优点

  • 轻松安装、测试、升级、拆除论坛
  • 论坛数据库安全漏洞不会使我的主站点面临风险(反之亦然)

缺点

  • 集成到现有站点需要同时查询两个数据库。我怀疑这会更难编程。
  • 用户必须在论坛上重新注册
  • 备份 2 个数据库而不是一个(这是一个小问题,但确实是一个问题)

你的想法? :-)

【问题讨论】:

    标签: mysql database security database-design forum


    【解决方案1】:

    从 2 个数据库中查询:

    select db1.a.field1, db2.b.field2 from db1.a
    inner join db2.b on (db1.a.id = db2.b.id);
    

    只需确保您的连接字符串可以访问两个数据库。
    并且两个数据库需要在同一台机器上。

    【讨论】:

      【解决方案2】:

      对我来说证明自己的方法是:

      1. 将论坛安装为单独的系统
      2. 写一个薄层来共享登录(如果两者都使用 open id 或类似的东西,很高兴)
      3. 随着时间的推移,我会慢慢小心地将两个系统合并到有意义的地方,通常不会。我喜欢使用视图在两个数据库之间共享数据。

      【讨论】:

        【解决方案3】:

        合并到现有数据库 优点

        1. 将论坛数据集成到现有网站更容易.. [。从编码的角度来看,在一个数据库上运行查询与在另一个数据库上运行查询没有任何区别。此外,您的查询本身可以跨数据库。]

        2. 可以将现有用户表合并到论坛中,因此用户无需重新注册即可开始使用论坛。 [。是的,您可以这样做,但即使论坛表不在此数据库中,您也可以这样做。所以这是一个洗涤]

        3. 一体化备份。 [我想你已经掌握了。无论是一个数据库还是两个数据库,备份过程都是一样的。唯一的区别是你有 1 或 2 个文件]

        缺点

        1. 我立即添加了大量新代码,其中一些具有数据库访问权限,所有这些都是恶作剧的高调目标,这意味着我的原始数据库现在面临更大的风险攻击。 [也许。如果新代码使用动态 sql,和/或无法使用参数化查询,那么无论如何它都会被搞砸。此外,如果您的数据层允许用户在完全访问您的服务器的情况下执行查询,不幸的是,这似乎与大多数应用程序的课程相同,那么这些表是否在同一个数据库中都没有关系。有趣的是,MySql 网站一个月前就以这种方式被破解了。]

        2. 更新论坛软件将更加亲力亲为,因为它不会直接导致数据库失败。 [?我不完全确定你的意思。我从未听说过在这种情况下使用“翻牌”一词。]

        论坛和主站点的独立数据库 优点

        1. 轻松安装、测试、升级、拆除论坛 [不..无论它位于哪个数据库中,您都会遇到相同的问题]

        2. 论坛数据库安全漏洞不会使我的主站点面临风险(反之亦然)。 [取决于漏洞的类型以及安全的具体实施方式]

        缺点

        1. 集成到现有站点需要同时查询两个数据库。我怀疑这将很难编程。 [不是。它具有完全相同的复杂程度。您的查询也可以跨数据库。]

        2. 用户必须在论坛上重新注册 [不行。您可以在另一个表中重复使用相同的用户表]

        3. 备份 2 个数据库而不是一个(这是一个小问题,但它是一个问题)。 [我不同意,但话又说回来,我们的服务器上有几十个数据库,我们所有的备份都是自动化的。哎呀,一旦我们创建了一个维护计划,维护计划就会自动将其添加到每晚的备份计划中,所以这甚至都不是一个想法。]

        坦率地说,我想说唯一潜在的问题是新论坛内容如何访问数据库以及该帐户需要哪些用户权限才能完成其工作。如果做得对,那么就没有问题;但如果它以方式错误的方式完成,那么唯一真正的保护就是将论坛软件放在它自己的数据库服务器上......即使那样它也可能会导致问题。

        但这应该通过适当的安全审计来识别。

        【讨论】:

        • “我想你在这里抓紧了。” 一直在抓紧 :-)
        • @Andrew Heath:呵呵.. 我想我们都是。
        猜你喜欢
        • 1970-01-01
        • 2010-11-01
        • 2019-12-24
        • 2012-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        相关资源
        最近更新 更多