Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 设置数据库和访问控制权限_Php_Mysql_Database Design_Data Access_Access Control - Fatal编程技术网

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

Php 设置数据库和访问控制权限,php,mysql,database-design,data-access,access-control,Php,Mysql,Database Design,Data Access,Access Control,我是使用PHP和MySQL创建web应用程序团队的一员。应用程序将有多个具有不同角色的用户。该应用程序还将以地理分布的方式使用 因此,我们需要创建一个访问控制系统来控制特定数据库记录的用户权限,即修改数据库查询,以便只显示特定记录。例如,对于城市级别的用户,应仅显示与用户特定城市相关的记录,而对于国家级别的用户,应显示国家中所有城市的记录 我需要帮助设计一个系统,可以处理这种类型的信息检索,而无需硬编码SQL查询中的信息 任何帮助都将不胜感激 提前感谢用户是否可以直接访问数据库引擎?尽量避免 使

我是使用PHP和MySQL创建web应用程序团队的一员。应用程序将有多个具有不同角色的用户。该应用程序还将以地理分布的方式使用

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

我需要帮助设计一个系统,可以处理这种类型的信息检索,而无需硬编码SQL查询中的信息

任何帮助都将不胜感激


提前感谢

用户是否可以直接访问数据库引擎?尽量避免

使用专用用户帐户使应用程序连接到数据库,该帐户仅为应用程序提供整个应用程序所需的权限。根据应用程序定义的用户和角色以及简单的自定义API,在应用程序内部执行其余的安全性


如果这些用户可能需要访问和使用多个这样的应用程序,考虑将用户存储在一个单独的共享数据库中,并且应用程序使用共享的自定义API来查询它。

< P>用户是否可以直接访问数据库引擎?尽量避免

使用专用用户帐户使应用程序连接到数据库,该帐户仅为应用程序提供整个应用程序所需的权限。根据应用程序定义的用户和角色以及简单的自定义API,在应用程序内部执行其余的安全性


如果这些用户可能需要访问和使用多个这样的应用程序,考虑将用户存储在一个单独的共享数据库中,并且应用程序使用共享的自定义API来查询它。

< P>根据所需的安全需求,应用程序的设计将有所不同。 例如,信息是存储在多个数据库中还是存储在单个数据库中?向每种类型的用户提供表示其特定权限的数据库模式是否重要?显然,这些问题的答案表明您是否需要更安全的数据库访问系统

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

最极端的情况是,也可以通过存储过程严格控制对数据库的访问。然后,每个数据库用户只能访问他们所需的一组存储过程

在数据库中实现安全性可能是一件痛苦的事情,它会增加应用程序的复杂性和维护成本,并确实会降低应用程序的整体内聚性,但它也会为任何想要入侵或滥用系统的人提供一道非常严密的安全墙

无论出于安全目的在数据库中实现了什么,您显然还需要使用会话机制来存储当前经过身份验证的用户及其类型。为特定用户更改功能的一种简单方法是将每个用户的可用操作(读取函数或方法)及其属性(或属性)封装在一个类中,以表示特定用户。这样,如果两个人点击Dashboard.php,他们将准确地看到他们可以访问的数据


最后,您可以通过数据库中存储的有关用户的信息来控制某些访问控制(可能必须这样做),例如他们需要查看哪些城市的信息,或者他们管理哪些用户。然后使用这些信息创建可从用户特定的域对象访问的对象集合。

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

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

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

最极端的情况是,也可以通过存储过程严格控制对数据库的访问。然后,每个数据库用户只能访问他们所需的一组存储过程

在数据库中实现安全性可能是一件痛苦的事情,它会增加应用程序的复杂性和维护成本,并确实会降低应用程序的整体内聚性,但它也会为任何想要入侵或滥用系统的人提供一道非常严密的安全墙

无论出于安全目的在数据库中实现了什么,您显然还需要使用会话机制来存储当前经过身份验证的用户及其类型。为特定用户更改功能的一种简单方法是将每个用户的可用操作(读取函数或方法)及其属性(或属性)封装在一个类中,以表示特定用户。这样,如果两个人点击Dashboard.php,他们将准确地看到他们可以访问的数据

最后,您可以控制一些访问c