PostgreSQL is zeer uitbreidbaar en u kunt bijvoorbeeld uw eigen proceduretaal definiëren om functies in te schrijven.
PostgreSQL weet niets over de taal, behalve dat het een bepaalde taalhandler moet aanroepen om de functie uit te voeren.
De manier waarop is gekozen om dit te implementeren is om de code te vereenvoudigen als een string.
Dit is slechts een implementatiedetail en maakt PostgreSQL-functies niet meer of minder kwetsbaar voor SQL-injectie dan andere RDBMS.
Er zijn verschillende niveaus waarop u zich tegen injectie moet verdedigen:
-
De functieargumenten:hier moet u waar mogelijk niet-string datatypes kiezen.
-
De SQL-instructies binnen de functie:Hier moet u waar mogelijk dynamische SQL vermijden, en als u dynamische SQL moet gebruiken, moet u variabelen invoegen met behulp van de
%L
patroon van hetformat
functie.
Nogmaals, dit is hetzelfde als functie-elementen zijn gespecificeerd als strings of niet.