tin*_*lyx 4 postgresql security functions postgresql-extensions
我正在尝试查找 PostgreSQL可信过程语言 (PL)的列表,因为我经常需要在非超级用户环境中使用 PL。
但我找不到确切的答案。例如,这里的Postgres 文档表明 perl 有一个受信任和一个不受信任的 PL,这是一种我不太熟悉的语言。这里,它说TRUSTED
关键字是您在创建 PL 语言时可以指定的内容,在某些情况下可能会被忽略。
但我也有(可能是错误的)印象,即某些 PL 语言仅受信任(例如 JavaScript PL/V8)或仅不受信任(Python)。其他帖子似乎表明可以调整 pg 以使用以下内容制作甚至是python
一种可信赖的语言:
UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpythonu';
Run Code Online (Sandbox Code Playgroud)
我的问题比理论更实际。基本上:
是否可以将任何 PL 设置为可信和不可信?
如果不是,可以设置为受信任或受信任的特定语言是什么。
(“受信任”是指普通用户在 PL 语言中创建/执行/修改函数时应该具有有效的相同权限。另外,我使用的是 Postgres 9.x)
是否可以将任何 PL 设置为可信和不可信?
不。任何 PL 都可以标记为受信任或不受信任,但是如果您将一个不支持以受信任方式运行的 PL 停放,它会注意到这一点,ERROR
或者它会在没有沙箱的情况下静默运行,就好像它不受信任一样。
不要直接修改目录。
如果不是,可以设置为受信任或受信任的特定语言是什么。
就这些,
这就是内置 PL。值得注意的是,由于CPython 解释器的基本设计限制使得无法创建受限制的执行环境,PL/Python 无法以可信方式运行。可以创建一个“受信任的”Python 运行时,在其中攻击者可以免受简单错误的影响,但可以通过努力突破沙箱,但 PL/Python 不支持此功能,也没有任何补丁使其可能被接受.
还有一堆树外过程语言,其中一些支持可信模式。值得注意的是,PL/V8 (JavaScript)、PL/Lua 和 PL/Java 支持可信模式。可能还有其他人。
(顺便说一句,我真的很想看到采用内核中启用了受信任的 PL/Javascript 作为默认内核 PL,或者甚至更好,PL/C# 通过 Mono 或 .NET Core 用于 .NET)。
归档时间: |
|
查看次数: |
2188 次 |
最近记录: |