gpt4 book ai didi

mysql - 每个用户在使用单个应用程序时是否应该获得自己的数据库用户/密码?

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:17 24 4
gpt4 key购买 nike

我想问的是...

用户只能通过我的应用程序访问数据库。该应用程序本身允许管理员用户创建/修改/删除用户并赋予他们某些特权。所以,我有一个表,其中包含每个用户的登录名和密码。

我仍在开发该应用程序,因此它目前以 root 用户身份登录,没有密码。显然,我会改变它,但最好的做法是什么?我应该有应用程序使用的单个数据库用户和密码,还是应该在每次创建(或修改)应用程序用户时为数据库创建一个单独的用户?后者似乎需要更多工作。

最佳答案

您的应用程序当然应该为每个用户设置单独的用户 ID 和密码。鉴于此,应用程序在与数据库对话时没有理由拥有多个用户 ID。只要应用程序的安全性得到正确实现,拥有多个数据库用户 ID 就没有任何好处。

为每个用户提供他自己的数据库用户 ID 肯定是一个巨大的痛苦,因为它可能涉及各种特殊情况和异常。例如,要登录您的应用程序,应用程序必须验证用户的 ID 和密码。如果用户无权访问密码表,它将如何做到这一点?但是,如果需要保护任何东西免受未经授权的访问,那就是密码表。因此,您必须使用一个用户 ID 进行登录,然后将其取走并提供一个不同的用户 ID。很可能存在允许给定用户在一个上下文中访问但在另一个上下文中不允许访问的其他表。会计部门可能需要查看当年支付的工资总额,但他们可能看不到个别员工的工资。员工可能能够访问关于他们自己的福利的数据,但不能访问其他员工的数据。等等

我能想到的唯一异常(exception)是,如果您允许对数据库进行某种通用访问。以最极端的情况为例,如果您有一个屏幕,用户可以在其中键入任意 SQL 查询,然后您将执行该查询。在这种情况下,理论上您可以让应用程序分析查询并尝试应用安全规则,但这需要您的应用程序嵌入大量有关 SQL 的知识。在那种情况下,您最好为每个用户提供自己的数据库用户 ID,并将安全规则放入数据库引擎中。

关于mysql - 每个用户在使用单个应用程序时是否应该获得自己的数据库用户/密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986580/

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