我的网络应用程序的用户是否需要直接访问我的数据库?

时间:2013-12-10 17:21:05

标签: php mysql authentication

我正在创建一个用户将为其创建帐户的Web应用程序,允许他们在数据库上读/写数据。我即将开始创建网站的登录验证部分,这是我第一次真正做这部分。据我了解,我将创建一个用户表,该表将存储该网站的所有必要登录信息。

我知道还有数据库角色/权限。我的问题是关于2在这种情况下如何相关。我是否需要对网站和数据库中的用户进行身份验证?我的思维过程是,如果我的所有PHP脚本都设置为会话数据只允许经过身份验证的用户读/写数据库,那么我不需要在数据库端做任何事情,但我我想确保我正确地考虑这个问题。

这清楚如泥吗?

2 个答案:

答案 0 :(得分:5)

如果我理解正确,您的问题是否有问题,您的用户需要访问您的数据库。

您的用户不会直接与数据库通信。你的应用会。您的用户只会使用您的应用程序,它将充当用户和数据库之间的接口。

因此,只有应用程序需要访问数据库(以及相应的权限)。因为它现在可以访问数据库,所以它负责确保只有合适的人才能执行某些操作。 (通过登录和许可系统)

如果并非所有用户都应在您的应用中拥有相同的权限(您可能拥有普通用户和管理员),则需要在应用中创建权限系统,以检查用户是否具有执行特定操作的相应权限。

例如,如果有人试图删除一些重要数据,那么

  1. 确保他已登录(如果不是,请重定向到登录页面)
  2. 确保他具有相应的角色/权限(在这种情况下,他应该是管理员 - 如果他不是,请取消操作)
  3. Symfony's page on Security提供了一些见解。只需跳过Symfony特定的部分,阅读一般概念。

答案 1 :(得分:2)

您的用户将在您的网站上进行身份验证(通过从数据库中请求有关其有效性的详细信息)。经过身份验证后,他们可以执行网站授予他们访问权限的内容。

直接与数据库通信的唯一用户是您/您的网站。您的数据库将有一个名为“users”的表,但数据库的实际用户应该是除了您之外的其他任何人 - 您不希望随机用户自由统治。然后,您可以设置希望数据库对某些用户操作执行的数据库查询。

希望有助于澄清