sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad innebär att koden efter CREATE FUNCTION är en sträng?

PostgreSQL är mycket utbyggbart, och du kan till exempel definiera ditt eget procedurspråk att skriva funktioner i.

PostgreSQL vet ingenting om språket förutom att det måste anropa en viss språkhanterare för att utföra funktionen.

Sättet som valdes för att implementera detta är att förenkla att skicka koden som en sträng.

Detta är bara en implementeringsdetalj och gör inte PostgreSQL-funktioner mer eller mindre sårbara för SQL-injektion än andra RDBMS.

Det finns flera nivåer där du måste försvara dig mot injektion:

  • Funktionsargumenten:Här bör du välja icke-strängdatatyper när det är möjligt.

  • SQL-satserna i funktionen:Här bör du undvika dynamisk SQL när det är möjligt, och om du måste använda dynamisk SQL bör du infoga variabler med %L mönstret för format funktion.

Återigen, detta är detsamma om funktionskroppar anges som strängar eller inte.



  1. MySQL INSERT - Kräver fältnamn avgränsning av backtick/accent?

  2. MySQL returnerar alltid BIT-värden som tomma

  3. Hur man infogar poster från tabell till en annan utan dubbletter

  4. Sortera efter värdeordning i en select-sats i sats i mysql