PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 16.6 » Administration du serveur » Rôles de la base de données » Sécurité des fonctions

22.6. Sécurité des fonctions #

Les fonctions, les triggers et les politiques de sécurité au niveau ligne 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, ces mécanismes permettent aux utilisateurs d'utiliser un « cheval de Troie » contre d'autres utilisateurs avec une relative facilité. La protection la plus forte est un contrôle strict sur qui peut définir des objets. Quand cela n'est pas possible, écrivez les requêtes en se référant seulement aux objets dont les propriétaires sont dignes de confiance. Supprimez de search_path tout schéma permettant à des utilisateurs non dignes de confiance de créer des objets.

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.