gpt4 book ai didi

java - 让用户通过应用程序连接数据库的正确方法

转载 作者:行者123 更新时间:2023-12-01 17:30:54 25 4
gpt4 key购买 nike

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

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

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


编辑/注意:应用程序用户将无权直接访问数据库。数据库与应用程序位于同一服务器中,不会开放给外部访问。

最佳答案

各有利弊。

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

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

因此,例如,如果他们以某种方式注入(inject) DELETE FROM UsersTable,您就会将其锁定,并且即使它通过了您的验证逻辑,注入(inject)的命令也会失败。

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

如果您的应用因大量进行小额交易的并发用户而产生大量流量,请使用共享服务帐户进行数据库访问。

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

关于java - 让用户通过应用程序连接数据库的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11093419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com