18.5. 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.