UXDB安全数据库提供了客体重用的功能,为防止非法进程利用数据库客体的内存泄漏来攻击数据库。主要表现为以下:
在资源分配时,如创建新库,数据库设备初始化等,所得到的资源不包含该客体以前的任何信息内容。
在资源索回时,会确保这些资源中的全部信息被清除。
创建新的数据库用户进程时,分配给每个进程的资源不包含残留信息。
已经被删除或被释放的信息不再是可用的。
例1:
创建数据库db1,并在数据库db1中创建数据表db1_test:
create database db1; \c db1 create table db1_test(a int); \dt
删除数据库db1:
\c uxdb drop database db1;
重新创建数据库db1,查看db1中是否有表db1_test:
create database db1; \c db1 \dt
新建的数据库db1中没有表db1_test。
例2:
创建用户u1,查看u1的oid(唯一识别号):
create user u1 password '1qaz!QAZ'; select * from ux_roles where rolname = 'u1';
删除用户u1:
drop schema u1; drop user u1;
重新创建用户u1,再次查看oid,是否与之前的一致:
create user u1 password '1qaz!QAZ'; select * from ux_roles where rolname = 'u1';
重新创建的用户oid与之前不一致。