【发布时间】:2015-08-29 02:15:27
【问题描述】:
我正在开发一个 MySQL 项目网站,目标是可以在几家本地公司中实施,以跟踪一些信息(请注意,这是一个大学课程项目)。我的问题是关于使用类似结构的最佳方式,该结构可以使每家公司的信息对其他公司保密。
假设我有 3 家不同的公司,每家都需要一个数据库来存储员工、项目和消息,或者每个公司需要 3 个数据库。
我目前的计划是创建 10 个数据库:3 个所需数据库中的 3 个,总共 9 个。这些数据库的名称将带有前缀以区分它们(例如 CompanyA_employees、CompanyB_employees、CompanyC_employees等)然后我将使用第 10 个数据库来存储公司名称及其各自的前缀。这是执行此操作的好方法,还是有更好的方法?
另外,我还想为每个数据库提供自己的用户(同样,它会加上前缀)和自己的唯一密码。这将是 PHP 脚本中用于访问 DB 和 SELECT、INSERT 等的用户名和密码。我希望这将使某人难以一次破坏超过 1 个 DB,或让公司能够访问彼此的敏感信息。此外,这些用户只会被授予对数据库的最低权限,以进一步防止事情变得更加糟糕。
我会将 DB 用户的密码(当然,SHA256 或 SHA512 用盐散列)存储在第 10 个 DB 中。如果这是一个好的设计,是否有比每次需要访问其他数据库时查询第 10 个数据库更好(但仍然安全)的方法来获取这些密码?我假设将它们存储在 cookie 中在安全方面是个坏主意。
感谢任何建议,因为我对保护 MySQL 数据库比较陌生。
【问题讨论】:
-
我理解为不同的公司使用不同的数据库,但为什么为单个公司使用 3 个数据库?只需做一个 masterDB,然后每个公司一个 DB。
-
这真的取决于...您也可以将数据库与公司隔离开来,只允许访问 API。您将更详细地了解谁可以访问什么以及访问多少次。
-
我可能可以将所有内容放入每个公司@RobbyCornelissen 的单个数据库中。我将它们分开的主要目标是允许 3 个用户拥有唯一的密码,从而使某人更难破解和窃取所有公司信息。我将不得不看看每个公司是否可以使用一个数据库,因为数据库可能存在大小限制,而且我们的设计必须扩展到 1000 多家公司。不过谢谢你的建议!