Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Java 使用户通过应用程序连接到数据库的正确方法_Java_Database_Database Connection - Fatal编程技术网

Java 使用户通过应用程序连接到数据库的正确方法

Java 使用户通过应用程序连接到数据库的正确方法,java,database,database-connection,Java,Database,Database Connection,我正在创建一个将有许多用户的web应用程序。每个用户都有自己的登录名和密码来访问应用程序。应用程序的数据将存储在数据库中 由于该应用程序将有许多用户,我想知道通过我的应用程序让用户连接到数据库的正确方法 创建数据库的多个用户(帐户)还是简单地使用master/root从应用程序连接到数据库更好 编辑/注意:应用程序用户将无法直接访问数据库。该数据库位于应用程序的同一服务器中,不允许外部访问 标准解决方案是您的应用程序有一个主登录名/密码来连接数据库。然后创建一个包含以下列的表: 用户id 用

我正在创建一个将有许多用户的web应用程序。每个用户都有自己的登录名和密码来访问应用程序。应用程序的数据将存储在数据库中

由于该应用程序将有许多用户,我想知道通过我的应用程序让用户连接到数据库的正确方法

创建数据库的多个用户(帐户)还是简单地使用master/root从应用程序连接到数据库更好



编辑/注意:应用程序用户将无法直接访问数据库。该数据库位于应用程序的同一服务器中,不允许外部访问

标准解决方案是您的应用程序有一个主登录名/密码来连接数据库。然后创建一个包含以下列的表:

  • 用户id
  • 用户名
  • 密码加密
  • 电子邮件地址
  • 权限

请注意,密码会带来安全问题,您应该使用软件包来处理授权,或者阅读大量有关此主题的内容。在没有强加密的情况下,不要将用户密码存储在数据库中。

标准解决方案是您的应用程序有一个主登录名/密码来连接数据库。然后创建一个包含以下列的表:

  • 用户id
  • 用户名
  • 密码加密
  • 电子邮件地址
  • 权限

请注意,密码会带来安全问题,您应该使用软件包来处理授权,或者阅读大量有关此主题的内容。在没有强加密的情况下,不要将用户密码存储在数据库中。

每种方法都有优点和缺点

使用共享服务帐户对数据库进行身份验证的优点是能够更有效地将连接池连接到数据库。也就是说,可以在用户之间重复使用连接,从而最大限度地减少打开新连接的操作成本,如果每个用户分别进行身份验证,则必须执行此操作。一个明显的缺点是,在验证用户正在运行的任何SQL时,您必须格外小心,因为帐户上的权限必须能够执行系统中最强大的用户需要执行的操作

为每个用户使用帐户使您可以更灵活地为不同的用户分配权限,而无需在应用程序中实现您自己的自定义授权方案。此外,它使审核系统变得更容易,因为在检查数据库连接时,您知道谁连接了。最后,这种方法可以减少SQL注入的漏洞,因为您可以锁定每个用户的帐户(最好在DB平台中使用基于角色的安全性),以便只能执行用户应该允许执行的操作

因此,例如,如果他们以某种方式从UsersTable中注入DELETE,那么您将锁定它,并且注入的命令将失败,即使它通过了您的验证逻辑

如果您的用户知道如何使用数据库工具(特别是MS Access),并且可以直接访问数据库服务器,那么还有另一个需要考虑的问题。如果您使用每用户授权模型,您可能会遇到精明的用户绕过您的应用程序并直接针对数据库工作的问题。如果您的用户是一群程序员,那么您可能希望使用共享帐户

如果您的应用程序被大量进行小型交易的并发用户大量访问,请使用共享服务帐户访问数据库


如果同时连接到系统的用户较少,或者您希望对对象的授权具有更高的安全性和/或更好的控制,请使用“帐户/每用户”方案。

每种方案都有优点和缺点

使用共享服务帐户对数据库进行身份验证的优点是能够更有效地将连接池连接到数据库。也就是说,可以在用户之间重复使用连接,从而最大限度地减少打开新连接的操作成本,如果每个用户分别进行身份验证,则必须执行此操作。一个明显的缺点是,在验证用户正在运行的任何SQL时,您必须格外小心,因为帐户上的权限必须能够执行系统中最强大的用户需要执行的操作

为每个用户使用帐户使您可以更灵活地为不同的用户分配权限,而无需在应用程序中实现您自己的自定义授权方案。此外,它使审核系统变得更容易,因为在检查数据库连接时,您知道谁连接了。最后,这种方法可以减少SQL注入的漏洞,因为您可以锁定每个用户的帐户(最好在DB平台中使用基于角色的安全性),以便只能执行用户应该允许执行的操作

因此,例如,如果他们以某种方式从UsersTable中注入DELETE,那么您将锁定它,并且注入的命令将失败,即使它通过了您的验证逻辑

如果您的用户知道如何使用数据库工具(特别是MS Access),并且可以直接访问数据库服务器,那么还有另一个需要考虑的问题。如果您使用每用户授权模型,您可能会遇到精明的用户绕过您的应用程序并直接针对数据库工作的问题。如果您的用户是一群程序员,那么您可能希望使用共享帐户

如果您的应用程序被大量进行小型交易的并发用户大量访问,请使用共享服务帐户访问数据库


如果同时连接到系统的用户较少,或者您希望对对象的授权具有更高的安全性和/或更好的控制,请使用帐户/每个用户方案。

这就是我的想法:连接到数据库的主登录名/密码。但是数据库