出于安全考虑,我要求DB团队添加EXTPROC_DLLS:ONLY;但是他们这样说:
对我来说,这似乎不对。你能帮帮我吗? EXTPROC的确切用途是什么?如果我们不添加EXTPROC_DLLS,会发生什么?"请注意,KEY = EXTPROC1526未引用任何内容 外部过程。这只是任何流程需求所使用的密钥 通过IPC协议调用Oraxxx。密钥可以是任何值,也可以是相同的 键值应通过tnsnames.ora"
传递
答案 0 :(得分:3)
对于连接oracle数据库的任何程序,您需要Extproc代理。
PLS/SQL
例如需要Extproc
才能使用oracle
您可以找到有关证券here的更多信息
我经过一些链接
Description
***********
The Oracle database server supports PL/SQL, a programming language. PL/SQ can execute external procedures via extproc. Over the past few years there has been a number of vulnerabilities in this area.
Extproc is intended only to accept requests from the Oracle database server but local users can still execute commands bypassing this restriction.
Details
*******
No authentication takes place when extproc is asked to load a library and execute a function. This allows local users to run commands as the Oracle user (Oracle on unix and system on Windows). If configured properly, under 10g, extproc runs as nobody on *nix systems so the risk posed here is minimal but still present.
答案 1 :(得分:2)
与其他数据库相反,Oracle不允许插件访问自己的内存地址空间。在MySQL / PostgreSQL的情况下,主数据库进程加载.dll插件(C存储过程)。
Oracle允许侦听器通过调用extproc
(或extproc32
)来生成新进程。此过程通过IPC将共享库和数据库的其余部分加载到此过程。
这种方法更安全,因为外部库不会崩溃数据库也不会损坏数据。另一方面,有时C存储过程可能比Java存储过程慢。
此选项可以限制extproc加载的.dll的路径。即由CREATE LIBRARY
声明创建的那些。
PS:使用C存储过程非常罕见,如果不使用它们,可以从listener.ora中自由删除整个extproc节。
PS1:有可能利用extproc
功能。
CREATE LIBRARY
,通常不会授予CREATE LIBRARY
语句extproc
到dlopen
此库exproc
将使用操作系统权限oracle:dba
使用此EXTPROC_DLLS:ONLY
限制时,开发人员必须与DBA合作,并且只能使用和加载列入白名单的库。