基于数据库的存取控制实现系统角色控制

1 篇文章 0 订阅
1 篇文章 0 订阅

一、数据库的存取控制

存取控制是数据库安全技术之一,其它的安全技术还有用户身份鉴别、审计、视图和数据加密。在web应用系统开发过程中,我们也是常用到这些技术。比如进入系统之前需要进行登录,这就是用户身份鉴别;在对数据表的操作时,我们可以为每一个子系统、子用户定义一个视图,这样相关权限的用户只能看到和操作和自己有关的数据,从而确保的数据库中数据的安全,视图还有一个比较大的作用就是可以实现数据库的数据独立性;数据加密在开发中更是常用了,比如在数据库中保存用户密码时,我们都会加密,比如md5/base64等,一般不会原文暴露在数据库中,这样很不安全。

接下来说说数据库的存储控制,存储控制确保了只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据库。

存取控制机制主要包括定义用户权限和合法权限检查两部分

(1)定义用户权限

为每个类型、不同权限的系统用户创建数据库用户,并将相应的数据库操作权限授予该用户,比如可以对那个表进行增删查改等怎样的操作。

(2)合法权限检查

不同权限的用户登录应用系统时,应该采用该用户相应的数据库用户连接数据库,这样可以确保该用户只能操作有权限的数据,从而确保了数据库的安全。

二、小demo

需求:

后台管理系统有超级管理员和普通管理员,这两个角色的权限不一样

实现:

1、创建普通管理员数据库账号(超级管理员可用数据库超级用户也可再创建一个)

--创建普通管理员数据库账号
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin';

2、对数据库角色进行授权

--对普通管理员数据库账号授权,除了对管理员表,其他表拥有全部权限
GRANT all privileges ON db_shop.address TO 'admin'@'localhost';

......

3、根据登录用户不同,选择不同的数据库账号连接数据库

    if(isset($_SESSION['isSuper']) && $_SESSION['isSuper']){
        $link=mysqli_connect(DB_HOST,DB_USERNAME,DB_PASSWORD,DB_NAME)
            or die("连接数据库失败");
    }else{
        $link=mysqli_connect("localhost","admin","admin","db_shop")
            or die("连接数据库失败");
    }

这样就可以通过数据库的存取控制实现系统角色控制,这种方法实现的安全性较高。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值