1

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

select * from  ALL_SOURCE where NAME = 'procedureName';

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

4

1 回答 1

2

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

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

于 2012-04-04T22:51:27.187 回答