首页 > 解决方案 > 如何限制对 Oracle 中 sys_context 的访问?

问题描述

我希望能够防止只读数据库用户能够访问某些系统功能,例如 sys_context。IE

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

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

标签: oraclesecurity

解决方案


我没有找到阻止访问的方法SYS_CONTEXT,但是您可以阻止访问DATABASE_NAMEand DBMS_UTILITY

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

但是,Oracle 在支持文档 Doc ID 247093.1 中非常强烈地警告要撤销 PUBLIC 的任何权限。基本上,如果您这样做,他们将不会支持您的应用程序,您只能靠自己。

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

就个人而言,我认为将数据库名称视为安全风险是完全愚蠢的。几十年来,您的渗透测试者抱怨的功能可供 PUBLIC 使用。让我想起了格林童话里的大妖精,当磨坊主的女儿猜到他的名字“Rumpelstiltskin”时,大妖精就死了……


推荐阅读