doc: warn of SECURITY DEFINER schemas for non-sql_body functions
authorBruce Momjian <[email protected]>
Thu, 1 Sep 2022 01:10:37 +0000 (21:10 -0400)
committerBruce Momjian <[email protected]>
Thu, 1 Sep 2022 01:10:37 +0000 (21:10 -0400)
Non-sql_body functions are evaluated at runtime.

Reported-by: Erki Eessaar
Discussion: https://postgr.es/m/AM9PR01MB8268BF5E74E119828251FD34FE409@AM9PR01MB8268.eurprd01.prod.exchangelabs.com

Backpatch-through: 10

doc/src/sgml/ref/create_function.sgml

index 81d086769785f1f9248d8090d42b2be9ed82b1b7..e60e93ea7b4a954afb8dd123baa6e4c4b9c8d79a 100644 (file)
@@ -753,7 +753,10 @@ SELECT * FROM dup(42);
    <para>
     Because a <literal>SECURITY DEFINER</literal> function is executed
     with the privileges of the user that owns it, care is needed to
-    ensure that the function cannot be misused.  For security,
+    ensure that the function cannot be misused.  This is particularly
+    important for non-<replaceable>sql_body</replaceable> functions because
+    their function bodies are evaluated at run-time, not creation time.
+    For security,
     <xref linkend="guc-search-path"> should be set to exclude any schemas
     writable by untrusted users.  This prevents
     malicious users from creating objects (e.g., tables, functions, and