数据库设计如何避免操作员提权漏洞呢,普通用户和管理员分不同的表,可行吗

发布于 2022-09-05 06:20:43 字数 673 浏览 55 评论 0

以下是discuz的一则提权漏洞,网上摘取

 4.修改普通用户为管理员用户

    在“antian_members”表中将用户“cxb”的“adminid”值由“0”修改为“1”;将“groupid” 值由“12”修改为“1”,然后单击“MySQL-Front”上面的发布按钮使修改生效,至此已经将普通用户cxb变成管理员用户,在登录的网页中刷新一下,再次查看用户个人信息,如图5所示,用户“cxb”的用户组已经升级为“Administrator”,可以行使管理员权限。

   

    图5 普通用户组已经升级为管理员组(四)管理员密码丢失解决方案

    1.修改管理员密码为已知用户密码

    使用Mysql-Front打开myuc_members表后,单击工具条下面的“数据浏览器”

    查看myuc_members表中的数据,如图6所示,先将admin的password值复制到本地进行备份,以待出现错误后进行恢复,将已知用户的密码值(password中的值)复制到admin中替代原来的值。
    

归根结底是因为超级管理员、管理员、普通用户,都是一张表,用role_id字段控制,当然是十分方便,但是连discuz都有的提权漏洞,分开表显然是遇到问题退缩的表现,开发效率也会受影响,但是如果公用表,设计上该如何避免呢,本来想到的是user表再新增一个字段冗余权限,进行二次判断,但是仍然可能会有漏洞,不知道高手是如何避免,取取精!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文