利用SELinux增强PostgreSQL和虚拟化安全
1. 为PostgreSQL创建可信过程
PostgreSQL支持函数和过程,以更结构化和可管理的方式在数据库内或对数据进行操作隔离或组合。过程允许在数据库中进行事务更新,但本身不返回值;函数返回值,但不允许进行事务更新。
我们将创建两个函数:
postgres=# CREATE FUNCTION compare_hash(fuid int, fphash text)
RETURNS boolean AS 'SELECT phash = regexp_replace(fphash,
''[^a-f0-9]*'', '''', ''g'') FROM tb_users WHERE uid = fuid'
LANGUAGE sql;
postgres=# CREATE FUNCTION set_hash(fuid int, fphash
text) RETURNS int AS 'UPDATE tb_users SET phash = regexp_
replace(fphash, ''[^a-f0-9]*'', '''', ''g'') WHERE uid = fuid
RETURNING uid' LANGUAGE sql;
在函数中引入正则表达式来清理输入,避免函数成为SQL注入等活动的跳板。
2. 为函数添加SELinux标签
在默认的SELinux策略中,有以下几种类型可用于处理过程和函数:
| 类型 | 描述 |
| ---- | ---- |
超级会员免费看
订阅专栏 解锁全文
55

被折叠的 条评论
为什么被折叠?



