如何在Oracle中限制对sys_context的访问?

问题描述 投票:0回答:1

我想能够阻止一个只读数据库用户访问一些系统函数,例如sys_context。

SELECT sys_context('USERENV', 'SID') FROM DUAL;
SELECT SYS.DATABASE_NAME FROM dual;
SELECT dbms_utility.port_string FROM dual;

*编辑:通过这里提供的回复和我这边尝试的其他事情,向biz提供了一份冗长的报告。他们认为试图限制这些权限不值得冒险,因此放弃了。

oracle security
1个回答
0
投票

我没有找到一种方法来防止访问 SYS_CONTEXT但你可以防止访问 DATABASE_NAMEDBMS_UTILITY:

REVOKE EXECUTE ON SYS.DBMS_UTILITY FROM PUBLIC;
REVOKE EXECUTE ON SYS.DATABASE_NAME FROM PUBLIC;

然而,Oracle在Support Document Doc ID 247093.1中非常强烈地警告要撤销任何来自PUBLIC的特权。基本上,如果你这样做,他们将不支持你的应用程序,你要靠自己。

找出会话号(SID)有什么问题?每次你连接时它都会改变...

我个人认为,把数据库名称视为安全风险是完全愚蠢的。你的pentesters抱怨的功能几十年来都是可以被public访问的。让我想起了《格林姆斯童话》中,一旦磨坊主的女儿猜出他的名字 "Rumpelstiltskin",妖精就会死去......

© www.soinside.com 2019 - 2024. All rights reserved.