Функция SECURITY DEFINER в PostgreSQL может быть опасной по нескольким причинам:
- Некорректный доступ к объектам базы данных. www.cybertec-postgresql.com Доступ к объектам без явного указания схемы может повлиять на другие объекты, чем предполагал автор функции. www.cybertec-postgresql.com Это связано с тем, что в сессии с базой данных можно изменить параметр конфигурации search_path, который определяет, какие схемы искать для нахождения объекта базы данных. www.cybertec-postgresql.com
- Возможность злоумышленника выполнить произвольные SQL-команды. bdu.fstec.ru Если не принять меры по защите структуры запроса SQL, эксплуатация уязвимости функции SECURITY DEFINER может позволить нарушителю, действующему удалённо, выполнить произвольные SQL-команды. bdu.fstec.ru
Чтобы обезопасить функцию SECURITY DEFINER, рекомендуется исключить из пути search_path любые схемы, доступные на запись недоверенным пользователям. postgrespro.ru Это не позволит злонамеренным пользователям создать свои объекты (например, таблицы, функции и операторы), которые замаскируют объекты, используемые функцией. postgrespro.ru