可以用plpgsql读/写/删除OS文件吗?

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

是否可以使用PL / pgSQL读取,写入,删除OS文件?

我可以运行OS命令吗?

我见过一些例子,你可以复制像CSV这样的文件,但是你能读/写/删除OS文件吗?你能执行OS命令吗?

postgresql plpgsql
2个回答
3
投票

不,那是不可能的。

PL / pgSQL是一种受信任的语言,因此不允许访问服务器资源,更不用说运行OS命令了。

Explanation of "trusted language"

可选的关键字TRUSTED指定该语言不授予用户不具备的数据的访问权限。可信语言是为普通数据库用户(没有超级用户权限的用户)设计的,并允许他们安全地创建函数和过程。由于PL函数在数据库服务器内部执行,因此只应为不允许访问数据库服务器内部或文件系统的语言提供TRUSTED标志。


有一些SQL functions可用,允许具有超级用户权限的角色读取服务器上的文件 - 但这与PL / pgSQL无关。

如果您确实想要打开数据库服务器以进行各种攻击,请使用不受信任的语言,例如PL/Python,或者如果您真的喜欢冒险的PL/sh


1
投票

PostgreSQL在数据目录中有一些functions to read filespg_read_filepg_read_binary_file

“adminpack” extension具有写入文件的功能:pg_file_write

也许你可以滥用COPY ... TO PROGRAM在服务器上运行代码。

但聪明的做法是用PL / PerlU或PL / Python编写一个函数。

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