Схема public в PostgreSQL считается небезопасной по нескольким причинам:
- Возможность создания одноимённых объектов в разных схемах. 1 Это потенциально позволяет пользователям влиять на поведение запросов других пользователей, злонамеренно или случайно. 1
- Использование неполных имён. 1 Злоумышленник может создать объекты в схеме, включённой в путь поиска, и таким образом перехватывать управление и выполнять произвольные функции SQL. 1
- Отсутствие соответствия стандарту SQL. 1 Стандарт не поддерживает обращение в одной схеме к разным объектам, принадлежащим разным пользователям. 1 Для максимального соответствия стандарту использовать схему public не следует. 1
В версии PostgreSQL 15 поведение схемы public изменилось: создавать объекты в ней может только владелец базы данных. 2