miércoles, 23 de julio de 2014

Utilidad Wrap PL/SQL y función DBMS_DDL.WRAP

Los programadores como parte de seguridad de su código requieren de formas más seguras de protegerlas del mundo, para ello Oracle creó una utilidad para envolver ese código (wrap.exe).

Con esta utilidad podemos proteger código que no se desea que sea expuesto o sea libre, es como una manera de proteger los derechos de autor y propiedades intelectuales del programador.

La utilidad de envoltura toma un archivo de texto ASCII legible como entrada y la convierte a un archivo que contiene código de bytes. El resultado es que los DBA's, desarrolladores o cualquier persona con acceso a la base de datos no pueda ver el código fuente en cualquier formato legible.

Hay 2 maneras de envolver (wrappear*) código en la base de datos.

Mediante la función DBMS_DDL.WRAP y mediante el wrap.exe en el sistema del sistema.

1. DBMS_DDL.WRAP:
Ejecutamos el siguiente código, donde lo que va es el código deseado.
SELECT DBMS_DDL.WRAP ('CREATE OR REPLACE PACKAGE ORACLE_WRAP IS 
LV_VARIABLESGLOBALES VARCHAR2(1000);
PROCEDURE ORACLE_P_WARP (LV_VARIABLESLOCALES VARCHAR2) IS
BEGIN
        NULL;
END;')
FROM DUAL;

Resultado:
CREATE OR REPLACE PACKAGE ORACLE_WRAP wrapped 
a000000
369
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
9
92 b2
ANMT2o11sWW7fySkPmDKmPVq2jkwg1zwLZ5qfHSi2h7VIRsTBT232OfGw7TmqPp9tbVtI+ds
vkOvr5iCBpYBr4vbxXP1ZVb94X2zKJvmoQHZg9OyBhEwbLVZuy8VdvtH/dnC+KrdkqFIV1Uy
eeRLwQimocAmqer84qs1/NMPJPjyFBk=

*Para envolver o wrappear objetos debemos de poner desde el Create or Replace hasta el punto y coma final del código.

2- wrap.exe:
Pasos:
1. Lo primero es seleccionar el objeto de la base de datos que queremos envolver.

2. Click derecho sobre el objeto y le damos crear script

3. Creado el script lo guardamos en un directorio de preferencia y en la extensión le ponemos nombre_objeto.sql


4. Nos vamos al símbolo del sistema y ejecutamos el wrap.exe


5. Tal y como está en la imagen anterior ella nos crea un archivo nombre_objeto.plb que es el que nos da el código envuelto, este archivo lo encontramos en la misma carpeta donde está el wrap.exe, en mi caso es:
C:\DevSuiteHome_1\BIN.
El archivo en si me quedó con la ruta: C:\DevSuiteHome_1\BIN\COR_K_UTILITY.plb

6. Nos vamos al editor de la herramienta de administración de base de datos que tengamos, en mi caso TOAD, y jalamos el archivo con la extensión nombre_objeto.plb


7. Ejecutamos el código envuelto y listo, tenemos el código envuelto.


Otra forma es mediante Toad for Oracle



Y como resultado: