Функции, триггеры и политики безопасности на уровне строк позволяют пользователям вставлять
код в серверный процесс, который другие пользователи могут выполнить
непреднамеренно. Следовательно, эти механизмы позволяют пользователям с относительной легкостью подбрасывать
«троянских коней» другим. Самая сильная защита — жесткий
контроль над тем, кто может определять объекты. Там, где это неосуществимо, пишите
запросы, ссылающиеся только на объекты, имеющие доверенных владельцев. Удалите
из search_path любые схемы, которые позволяют недоверенным пользователям
создавать объекты.
Функции выполняются внутри серверного процесса с разрешениями операционной системы демона сервера базы данных. Если язык программирования, используемый для функции, допускает неконтролируемый доступ к памяти, можно изменить внутренние структуры данных сервера. Следовательно, помимо прочего, такие функции могут обходить любые системные средства контроля доступа. Языки функций, допускающие такой доступ, считаются «недоверенными» (untrusted), и Digital Q.DataBase разрешает только суперпользователям создавать функции, написанные на этих языках.