3.1.4 授权可能出现的问题
在很多系统如CRM、ERP、OA中都有权限管理,其中的目的一个是管理公司内部人员的权限,另外一个就是避免人人都有权限而账号泄露后会对公司带来的负面影响。
权限一般分为两种:访问权限和操作权限。访问权限即是某个页面的权限,对于特定的一些页面只有特定的人员才能访问。而操作权限指的是页面中具体到某个行为,肉眼能看到的可能就是一个审核按钮或提交按钮。
权限的处理方式可以分为两种:用户权限和组权限。设置多个组,不同的组设置不同的权限,而用户设置到不同的组中,那就继承了组的权限,这种方式就是组权限管理,一般都是使用这种方式管理。而用户权限管理则比较简单,对每个用户设置权限,而不是拉入某个组里面,但是其灵活性不够强,用户多的时候就比较费劲了,每次都要设置很久的权限,而一部分用户权限是有共性的,所以组权限是目前很通用的处理方式。
在权限方面,还包括了数据库的权限,网站管理的权限以及AP I/Service的权限。
DBA都需要控制好IDC的数据库权限,而不是将用户权限设置为*.*,需要建立专门供应用程序使用的账号,并且需要对不同的数据库和不同的表赋予权限,专门供应用程序使用的账号就不能进行更改表、更改数据库及删除操作,否则如果有SQL注入漏洞或程序有bug的话,黑客就能轻易连接到数据库获取更多的信息。因为DBA账号除了可以更改数据库结构、数据及配置之外,还可以通过LOAD DATA INFILE读取某个文件,相当于整台服务器都被控制了。
API可以分为Private API和Open API。Private API一般是不希望外网访问的,如果架设在内网的话,最好使用内网IP来访问,如果是公网的话,最好设置一定的权限管理。Open API的权限就相对复杂很多,除了要校验参数正确性,还需校验用户是否在白名单中,在白名单里的话还需校验用户对应的权限,有些时候还需要考虑是否要加密传输等。