2012-03-18 100 views
1

我有一个我正在开发的SaaS平台;用PHP编写并使用MySQL数据库(使用PHP PDO类)。SaaS平台 - 每个用户或一个主帐户的不同数据库用户

应用程序已经在功能和我已经决定使用一个单独的数据库为每个实例。

的原因之一为使用多个数据库是为了确保客户端数据被分离(希望安全)。这也使我们能够轻松地将他们的实例转移到内部部署版本中。

安全总是我担心的事情。我希望确保这个系统在上线之前尽可能安全。

目前我们使用一个单一的MySQL用户名密码&有每一个数据库访问(对MySQL特定农场)。

理论上,如果存在安全漏洞,那么攻击者可能能够访问不同的数据库(用户名&密码在PDO /数据库连接建立后未设置,但他们可能能够运行诸如“使用databaseB“)。

这是我应该关注的东西吗?例如,简单地使用数据库分区的SaaS平台已经不太安全,因为简单的SQL错误可能会暴露客户端数据。

我已经开始研究使用不同的数据库用户名&密码,但它确实增加了SaaS平台的复杂性,保持简单的事情总是一个好主意。

谢谢!


我已决定为每个实例使用不同的用户名和密码。

这是另一层安全,并且不能伤害。

+0

我不知道如何发送PM在这个系统上。你正在建立专有或公司/团队的一部分? – phpmeh 2012-03-19 00:06:30

+0

嗨Phpmeh。谢谢回复。我不确定你的意思,我是这个产品的主要开发者(它正在内部构建)。一旦系统准备就绪,我们可能会得到外部公司的支持。 – 2012-03-19 00:09:06

+0

是的,我只是好奇。我正在构建我计划部署SaaS风格的业务管理软件。我有一位初级开发人员为我工作,我们一直在为这个项目工作6个月。即便如此,这是非常缓慢的。始终希望与人们共同合作。 – phpmeh 2012-03-19 00:15:25

回答

1

从理论上讲,如果有一个安全漏洞,则攻击者可能 能够访问不同的数据库(用户名&密码没有设置 的PDO /数据库连接后,但他们也许能够 运行一个查询诸如“使用数据库B”)。

这是我应该关注的东西吗?例如,仅使用数据库分区的SaaS 平台已经不太安全 ,因为简单的SQL错误可能会暴露客户端数据。

1)如果你正在做你的安全权利,它应该是非常困难的(如果不是不可能的话),他们手动编写查询。
2)你刚刚摆出的问题是为什么我会在数据库之间提倡不同的用户/密码。
3)我鼓励多个数据库连接的另一个原因......我为一家拥有大约10人的公司制作了制造控制软件。数据库变得很庞大并不需要很长时间。多个数据库将保持控制的大小比1好。
4)如果我只使用1个数据库,我会更加关心客户意外访问另一家公司的信息,像权限问题一样简单。

这个问题我仍然在关于分区数据库(我还没有研究/测试)仍然挥之不去......我对如何处理数百个到1个数据库的连接有很好的理解。当你处理几百个数据库的连接时会发生什么?

+0

1)当然,所有查询都是通过绑定参数与PHP PDO类一起进行的。 2)是的,这是我的主要问题,如果这个额外的安全步骤应该使用。 3)是的,我们将使用多个数据库。 4)同意,这是我们使用多个数据库的另一个原因。 我不认为连接应该导致一个大问题,虽然额外的连接可能会占用更多的内存。 – 2012-03-19 04:53:40

相关问题