Php 使用MySQL用户或带有加密密码的表处理用户?

Php 使用MySQL用户或带有加密密码的表处理用户?,php,mysql,authentication,Php,Mysql,Authentication,我正在为一家小型企业准备一个仅在本地网络上运行的web应用程序。 我正在使用MYSQL并用PHP编写前端 我不确定如何最好地处理用户。我有大约20个不同的人访问该应用程序,以及至少3个拥有不同权限的不同组。 到目前为止,我已经直接在MYSQL中创建了用户和密码,其中的用户表存储个人信息(姓名、姓氏、电子邮件和登录信息),但不存储密码 我的想法是,通过这种方式,我可以通过限制MYSQL上的用户权限来增加一层安全性(例如,避免有人访问页面并调用删除查询) 但是,我很担心,因为这种方法迫使我在$\会话

我正在为一家小型企业准备一个仅在本地网络上运行的web应用程序。 我正在使用MYSQL并用PHP编写前端

我不确定如何最好地处理用户。我有大约20个不同的人访问该应用程序,以及至少3个拥有不同权限的不同组。 到目前为止,我已经直接在MYSQL中创建了用户和密码,其中的用户表存储个人信息(姓名、姓氏、电子邮件和登录信息),但不存储密码

我的想法是,通过这种方式,我可以通过限制MYSQL上的用户权限来增加一层安全性(例如,避免有人访问页面并调用删除查询)

但是,我很担心,因为这种方法迫使我在$\会话中(使用应用程序时)始终保存密码(因为我几乎在每个页面都需要连接到DB)


这种方法可以接受吗?

为什么会导致您在会话中保留密码?您是否错误地使用用户应用程序帐户连接到数据库?在大多数服务器上,PHP的会话文件以纯文本形式存储在一个文件夹中,任何有权访问服务器的人都可以访问该文件夹。这使得在会话中存储用户密码成为一个相当大的安全风险。除此之外,我个人认为“如果不允许我删除记录,不要给我显示删除按钮”,这意味着应用程序需要知道我可以做什么,这样它就可以选择隐藏按钮,而不是尝试一下,然后发现数据库不允许我这样做。@BoredGeek Small Note
password\u hash()
创建散列,散列不加密谢谢您的评论。我知道存储会话是不安全的,这就是为什么我在寻找替代方案。但是让每个人都用同一个MYSQL用户登录db可以吗(在这种情况下,我不需要在会话中存储pw)?我知道其中的风险,解决方案是什么?“让每个人都用同一个MYSQL用户登录数据库可以吗”…在web应用程序中,可以。您需要重新定义体系结构:登录数据库的是应用程序,而不是用户。用户登录到应用程序。因此,您需要应用程序的用户名和密码,而不是数据库。这些可以存储在数据库中。为了安全起见,数据库中存储的密码应该进行哈希处理——您可以通过PHP内置的password_哈希函数(以及password_verify,用于根据哈希副本检查密码尝试)来实现这一点。为什么这会导致您将密码保留在会话中?您是否错误地使用用户应用程序帐户连接到数据库?在大多数服务器上,PHP的会话文件以纯文本形式存储在一个文件夹中,任何有权访问服务器的人都可以访问该文件夹。这使得在会话中存储用户密码成为一个相当大的安全风险。除此之外,我个人认为“如果不允许我删除记录,不要给我显示删除按钮”,这意味着应用程序需要知道我可以做什么,这样它就可以选择隐藏按钮,而不是尝试一下,然后发现数据库不允许我这样做。@BoredGeek Small Note
password\u hash()
创建散列,散列不加密谢谢您的评论。我知道存储会话是不安全的,这就是为什么我在寻找替代方案。但是让每个人都用同一个MYSQL用户登录db可以吗(在这种情况下,我不需要在会话中存储pw)?我知道其中的风险,解决方案是什么?“让每个人都用同一个MYSQL用户登录数据库可以吗”…在web应用程序中,可以。您需要重新定义体系结构:登录数据库的是应用程序,而不是用户。用户登录到应用程序。因此,您需要应用程序的用户名和密码,而不是数据库。这些可以存储在数据库中。为了安全起见,数据库中存储的密码应该进行哈希处理——您可以通过PHP内置的password_哈希函数(以及password_verify,用于根据哈希副本检查密码尝试)来实现这一点。