20.6. Безопасность функций#
20.6. Безопасность функций #
Возможность определения функций, триггеров и политик защиты на уровне строк позволяет пользователям вставлять код в серверную часть, который другие пользователи могут выполнить непреднамеренно. Таким образом, эти механизмы позволяют пользователям сравнительно легко использовать "троянские кони" против других. Самая надежная защита - тщательный контроль над тем, кто может определять объекты. Если это невозможно, следует писать запросы, относящиеся только к объектам, имеющим доверенных владельцев. Удалите из переменной search_path
любые схемы, которые позволяют ненадежным пользователям создавать объекты.
Функции выполняются внутри процесса сервера с правами операционной системы демона сервера базы данных. Если язык программирования, используемый для функции, позволяет не проверять доступ к памяти, возможно изменение внутренних структур данных сервера. Таким образом, среди прочего, такие функции могут обойти любые системные контроли доступа. Языки функций, которые позволяют такой доступ, считаются "ненадежными", и Tantor BE позволяет создавать функции на таких языках только суперпользователям.