Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208863
  • 博文数量: 21
  • 博客积分: 1546
  • 博客等级: 上尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-10 14:54
文章分类

全部博文(21)

文章存档

2020年(1)

2019年(3)

2015年(2)

2014年(1)

2011年(1)

2009年(7)

2008年(4)

2007年(2)

我的朋友

分类:

2008-08-15 17:14:10

postgresql的plpgsql存储过程(函数)是以明文存储在系统表pg_catalog.pg_proc中,并且是所有的用户可读。可通过以下命令取消所有用户可读
 
REVOKE ALL  ON pg_catalog.pg_proc   FROM  PUBLIC
 
但超级用户还是可以读到明文,如果要不泄露明文,只有加密该存储过程,但postgresql不象SQL server那样提供加密存储过程的功能。要做到这一点,只有自己修改postgresql源代码,重新编译,以达到这要求
 
先说一下postgresql的存储过程的调用过程,对于每一个连接:
A。第一次运行plpgsql存储过程时,找出存储过程的明文,
B。进行编译,将编译中间结果存储在系统的HASH表中
C。再执行HASH表中已编译的中间结果
D。第二次运行存储过程时,就直接执行中间结果。
 
假如我们对存储过程的明文进行对称加密,将密文存储系统表pg_catalog.pg_proc中,在执行A和B之间,再将密文解密为明文,就可以达到要求。
 
阅读(3996) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~