postgresql - 可以用 plpgsql 读/写/删除操作系统文件吗?
问题描述
是否可以使用 PL/pgSQL 读取、写入、删除 OS 文件?
我可以运行操作系统命令吗?
我看过一些示例,您可以复制 CSV 等文件,但您可以读取/写入/删除操作系统文件吗?你能执行操作系统命令吗?
解决方案
不,那是不可能的。
PL/pgSQL 是一种受信任的语言,因此不允许访问服务器资源,更不用说运行操作系统命令了。
可选的关键字 TRUSTED 指定该语言不授予对用户本来没有的数据的访问权限。可信语言是为普通数据库用户(没有超级用户权限的用户)设计的,允许他们安全地创建函数和过程。由于 PL 函数是在数据库服务器内部执行的,因此 TRUSTED 标志应该只用于不允许访问数据库服务器内部或文件系统的语言
有一些可用的SQL 函数使具有超级用户权限的角色能够读取服务器上的文件——但这与 PL/pgSQL 无关。
如果您确实想为所有类型的攻击打开数据库服务器,请使用不受信任的语言,例如PL/Python,或者如果您真的喜欢PL/sh
推荐阅读
- android - Android unirest 库的问题 - Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier 类型的静态字段 INSTANCE
- angular - 使用 ng-bootstrap 将引导程序从 4.3.1 降级到 3.3.7
- python - 选择文件夹中的多个文件
- python - 如何使用 pyparsing Group 和 SkipTo 进行文件解析?
- node.js - 为什么无法启动 ExpressJS ?错误:听 EACCES 0.0.0.0
- c++ - 二维 NURBS 曲面
- sql-server - MSSQL 上 StartsWith 和 EndsWith 之间的性能问题
- wordpress - 根据产品类别 woocommerce 向收件人发送两封不同的新订单电子邮件
- excel - Excel:复制下拉菜单的结果
- tfs - 如何在发布中包含构建定义