设置数据库和访问控制权限

问题描述:

我是使用PHP和MySQL创建Web应用程序的团队的一员。该应用程序将具有多个用户,角色不同。该应用程序还将以地理分布方式使用。设置数据库和访问控制权限

因此,我们需要创建一个控制用户权限的特定数据库记录即修改数据库的查询,以便只显示特定记录的访问控制系统。例如,对于城市级别的用户,只应显示与用户所在城市相关的记录,而对于国家级别的用户,则应显示该国家所有城市的记录。

我需要设计出能够处理这种类型的信息检索没有硬编码在SQL查询的信息的系统帮助。

任何帮助,将不胜感激。

在此先感谢

+0

+1你的问题是一个很好的问题。它涉及如何控制对分层数据的访问,这比起初看起来更微妙。 – 2009-06-04 03:50:29

应用程序的设计将根据所需的安全需求而有所不同。

例如,信息存储在多个数据库或单个数据库中吗?向每个类型的用户显示表示其特定权限的数据库模式是否很重要?显然这些问题的答案表明您是否需要一个更安全的数据库访问系统。

如果这样做,则为系统中存在的每种类型的用户创建一个数据库用户。为每个用户提供相应的表,视图,过程等的权限。当用户对系统进行身份验证时,必须根据该用户的用户类型创建条件数据库连接。

采取最远极端,它也可以是适当的严格通过存储过程来控制对数据库的访问。然后每个数据库用户只能访问他们需要的一组存储过程。

在数据库中实现安全性可能会很痛苦,增加了应用程序的复杂性以及维护它的成本,并降低了应用程序中的整体内聚力,但它也为任何想要的人提供了非常严密的安全墙攻击或以其他方式滥用系统。

无论你的数据库为安全起见内实施什么样的,你也显然需要使用会话机制来存储当前认证的用户和他们的类型。为特定用户更改功能的简单方法是将每个用户的可用操作(读取函数或方法)及其属性(或属性)封装在类中以表示特定用户。这样,如果两个人打Dashboard.php,他们将精确地看到他们有权访问的数据。

最后,您可以通过数据库中存储的关于用户的信息来控制某些访问控制(并且可能需要),例如他们需要查看哪些城市的信息或他们监督的用户。然后使用该信息创建可从用户特定的域对象访问的对象集合。

用户是否可以直接访问数据库引擎?如果可以的话,避免它。

使应用程序连接到数据库与提供它只是权限整个应用需要一个专用的用户帐户。根据应用程序定义的用户和角色以及一个简单的自定义API,执行应用程序内部的其余部分。

如果这些用户可能需要访问和使用多个此类应用中,考虑存储在一个单独的共享数据库的用户和拥有的应用程序使用共享自定义API咨询一下吧。