每次使用不同的用户连接到数据库

Connect to the db each time with a different user

我正在努力提高我网站的安全性,实施我能做到的最好的安全系统。我知道创建具有不同权限的不同用户很好,但是为每个功能创建一个用户会有用吗?

我解释得更好:我为 dbSelect()dbInsert()dbUpdate() 等不同的操作创建了不同的函数。将增加系统的安全性,使每个函数连接到一个 MySQL 用户,该用户仅具有 SELECT 权限,在 dbSelect() 的情况下,INSERT 特权,如果是 dbInsert() 等?

在一个页面中,当然可以有所有这三个函数,连接数据库也是如此 SELECT,然后关闭连接打开 INSERT 一个,然后再次 SELECT, 等在性能方面影响数据库?

(这个问题可能会被关闭,因为这是一个见仁见智的问题。但是,我有一个意见。)

对于复杂的应用程序,使用多个不同的数据库用户是个好主意。

但是按照你的建议去做是没有意义的:让一个数据库用户做 SELECT,另一个数据库用户做 INSERT 等,因为这两个查询在实践中可以结合使用.

什么有意义?

拥有三个用户角色:

  1. 称之为 "webapp",代表您的网络应用程序的用户用于日常日常操作。它应该能够 select / 插入 / 更新并可能从操作表中删除行。

  2. 称之为 "webadmin",您的 Web 应用程序使用它来进行添加和删除用户等操作。该用户将在更慢变化的表上插入/更新并可能删除 priv,就像用户一样。它比第一个帐户使用得少得多。

  3. 称它为 "dba" 或其他名称,永远不会被 Web 应用程序本身使用。登录的人使用它来更改您的数据库。它拥有所有特权,包括创建、截断和删除表、索引、过程。您从未将"dba"帐户的密码放入网络应用程序的代码或配置文件中。

您可能还有另外两个帐户:

  1. "billing" 将仅由您的网络应用程序的计费部分使用,并且可以访问包含您保留的任何用户计费信息的表。

  2. "reports" 的工作方式类似于 "dba"。它将能够读取几乎所有表(可能不是计费表)但不能插入/更新/删除。

诀窍是:让您的大部分 Web 应用程序使用权限最低的 "webapp" 帐户,并且只在需要时使用提升权限的帐户。