sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvad betyder koden efter CREATE FUNCTION er en streng?

PostgreSQL er meget udvidelsesbar, og du kan f.eks. definere dit eget proceduresprog at skrive funktioner i.

PostgreSQL ved intet om sproget, bortset fra at det skal kalde en bestemt sprogbehandler for at udføre funktionen.

Den måde, der blev valgt til at implementere dette, er at forenkle videregivelsen af ​​koden som en streng.

Dette er kun en implementeringsdetalje og gør ikke PostgreSQL-funktioner mere eller mindre sårbare over for SQL-injektion end andre RDBMS.

Der er flere niveauer, hvor du skal forsvare dig mod injektion:

  • Funktionsargumenterne:Her bør du vælge ikke-streng datatyper, når det er muligt.

  • SQL-sætningerne i funktionen:Her bør du undgå dynamisk SQL, når det er muligt, og hvis du skal bruge dynamisk SQL, bør du indsætte variabler ved hjælp af %L mønster af format funktion.

Igen, dette er det samme, hvis funktionslegemer er angivet som strenge eller ej.



  1. Repræsentation af sparsomme data i PostgreSQL

  2. SQL Server (2008) Send ArrayList eller String til SP for IN()

  3. Booleske felter i MySQL Django-modeller?

  4. Hvilke færdigheder og viden har databasedesignere brug for?