PDA

Ver la Versión Completa : Eliminar el código fuente de un procedimiento almacenado


mlara
09-11-2017, 15:21:16
UPDATE
RDB$PROCEDURES P
SET
P.RDB$PROCEDURE_SOURCE = NULL
WHERE
P.RDB$SYSTEM_FLAG = 0;


Al ejecutar la sentecia previa en Firebird 3 se obtiene el mensaje: "... UPDATE operation is not allowed for system table RDB$PROCEDURES."

El usuario que realiza la conexión es SYSDBA, y el componente usado es un TSQL.

Alguien conoce la solución? Gracias.

Casimiro Notevi
09-11-2017, 18:12:39
¿Eliminar el código fuente o borrar el procedure?

mlara
09-11-2017, 20:07:54
P.RDB$PROCEDURE_SOURCE = NULL

Eliminar el código fuente. En Firebird 3 no funciona como en Firebird 2.5 y se obtiene el mensaje "... UPDATE operation is not allowed for system table RDB$PROCEDURES." Se menciona como una mejora de seguridad en:

http://tracker.firebirdsql.org/browse/CORE-4507

Dmitry Yemanov nos dice (en el 2014):

"The ability to explicitly set the source code to NULL is restored. All other kinds of direct modifications are still prohibited. Later (v4?) it will be replaced with a proper solution, be it special permissions or new DDL command or whatever else."

Sin embargo explícitamente no se encuentra la forma. En mi caso la conexión se realiza con el usuario SYSDBA.

ecfisa
09-11-2017, 20:14:42
Hola.

No he probado Firebird 3 y no se si le será aplicable, pero revisa este artículo: How to protect my metadata from users? (http://www.firebirdfaq.org/faq32/)

Y también creo importante leer las contras mencionadas bajo el título Deleting stored procedure and trigger source code (https://www.firebirdsql.org/pdfmanual/html/fbmetasecur-solution.html) al final de este artículo.

Saludos :)

mlara
09-11-2017, 21:11:54
Lo siento ecfisa... el primer enlace funciona para versiones previas a la 3.0, y podría decirse lo mismo del segundo que toca temas más allá de este requerimiento básico.

Cómo borrar el código fuente de disparadores, procedimientos almacenados y vistas en Firebird 3.0?

mamcx
09-11-2017, 21:36:00
No entiendo. Cual es el chiste de hacer esto?

ecfisa
09-11-2017, 21:45:35
Hola.

Aca encontré un enlace comentando el problema: Unable delete procedure source on Firebird 3.0 Alpha 2.0 (http://tracker.firebirdsql.org/browse/CORE-4507).

Al parecer es necesario crear una instrucción DDL por separado para lograrlo (aunque no explica como). También mencionan la opción de que el texto sea solo visible para el propietario o sysdba... Ojalá te sirva de ayuda.

Saludos :)

mlara
09-11-2017, 22:01:35
(aunque no explica cómo)

Gracias... pero ese es el detalle, cómo? A qué se refiere exactamente Yemanov? Y bueno, se trata de un post del 2014 y hace referencia a la versión Alpha 2.

mlara
09-11-2017, 22:37:12
No entiendo. Cual es el chiste de hacer esto?

Ningún chiste... no se trata de una aplicación que se instale en ambientes corporativos con servidores, infraestructuras decentes, administradores de red... etc. Digamos que el sistema es vulnerable y no, por lo pronto no se trata de solucionarlo de otro modo.

mlara
09-11-2017, 22:39:38
... sin embargo no quisiera desviar el tema, así que de nuevo la consulta:

Cómo borrar el código fuente de disparadores, procedimientos almacenados y vistas en Firebird 3.0?

... que no funciona como en Firebird 2.5

Imposible que alguien no lo haya hecho ya.

mlara
09-11-2017, 23:25:43
Esto tiene sentido... 4544-.

Gracias.