隐藏存储过程的主体?

时间:2012-04-04 22:45:05

标签: oracle security stored-procedures roles

我定义了一个角色,并仅使用连接到数据库并执行特定的存储过程来授予它。具有此角色的用户可以在执行此查询时查看过程主体;

select * from  ALL_SOURCE where NAME = 'procedureName';

过程采用VARCHAR2参数并将其与select查询一起使用。这是安全问题吗?我应该以某种方式隐藏它还是逃避参数?

1 个答案:

答案 0 :(得分:2)

通常,如果您的过程受SQL注入,则只会出现安全问题。您谈论转义参数这一事实意味着您可能正在进行动态SQL,并且可能容易受到SQL注入攻击。如果是这种情况,您需要修复程序,而不是隐藏源。

如果您的存储过程正在实现您认为是专有的某些业务逻辑,则可能wrap the code,以便在数据字典中对其进行模糊处理。但是,如果你这样做,请确保你在源代码管理中使用源代码,因为一旦你将代码包装起来就没有办法解包(严格来说,攻击者可以使用各种技术来恢复大部分代码。如果他们真的想要包装来源,但它是相当安全的。)