20.5. Sécurité des fonctions et déclencheurs (triggers)
Les fonctions et les déclencheurs autorisent à l'intérieur du
serveur les utilisateurs à insérer du code que d'autres
utilisateurs peuvent exécuter sans en avoir l'intention. Par
conséquent, les deux mécanismes permettent aux utilisateurs
d'utiliser un « cheval de Troie » contre d'autres
avec une relative facilité. La seule protection réelle est
d'effectuer un fort contrôle sur ceux qui peuvent définir des
fonctions.
Les fonctions sont exécutées à l'intérieur du processus serveur
avec les droits au niveau système d'exploitation du démon
serveur de la base de données. Si le langage de programmation
utilisé par la fonction autorise les accès mémoire non
contrôlés, il est possible de modifier les structures de
données internes du serveur. Du coup, parmi d'autres choses, de
telles fonctions peuvent dépasser les contrôles d'accès au
système. Les langages de fonctions qui permettent un tel accès
sont considérées « sans confiance » et PostgreSQL™ autorise uniquement les
superutilisateurs à écrire des fonctions dans ces langages.