oracle - 如何限制对 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 提供了一份冗长的报告。他们认为试图限制这些权利不值得冒险,因此放弃了。
解决方案
我没有找到阻止访问的方法SYS_CONTEXT
,但是您可以阻止访问DATABASE_NAME
and 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”时,大妖精就死了……
推荐阅读
- node.js - 尽管服务帐户的角色正确,但机密管理员访问被拒绝
- c++ - 在带有 C++ 文件的 ios 插件上找不到“字符串”文件
- python - win32com 从 * .exe 或 * .py 运行时有不同的行为
- sql-server - 使用自制软件安装的驱动程序版本
- python - 尝试发布时出现服务器错误,但在删除/获取/放入 django + vue js 时没有
- android-recyclerview - Xamarin.Android如何记住recyclerview中项目的位置
- python - 机器学习 模型过拟合
- amazon-web-services - 获得使用 2-Protocol Hours 账单。有人知道 AWS 中的这些费用吗?
- angular - 角度 - 如何使用开关将输入字段更改为只读
- flutter - 在 Build 方法中使用 FutureBuilder