Cómo Ocultar El Código de PL

download Cómo Ocultar El Código de PL

of 3

Transcript of Cómo Ocultar El Código de PL

  • 8/17/2019 Cómo Ocultar El Código de PL

    1/3

    Cómo ocultar el código de PL/SQL

    Puede el código PL/SQL ser escondido y protegido de miradas ajenas,cuando lo implantamos en alguna base de datos externa?

    La respuesta a esta inquietud es SI, gracias a un ejecutable y unpaquete disponible que nos permite compilar un procedimientoalmacenado y hacer que el uente quede con uso para quien intentaleerlo!

    "racle se re#ere a este m$todo como o uscamiento %ob uscation% &elt$rmino o uscar en el diccionario tiene el signi#cado de %oscurecer,encubrir%'!

    (s curioso como toda)*a hay empresas que desarrollan so t+are dealt*simo )alor corporati)o y lo implantan expuestamente en bases de

    datos de usuarios #nales que en muchos casos tiene acceso la propiacompetencia! o todos en la industria son mal intencionados, pero esmejor pre)enir que lamentar perder margen de )entaja!

    Qué encriptar

    -odo lo que sea código almacenado. procedimientos, unciones,paquetes y tipos! La excepción son los triggers, el m$todo no lossoporta, sin embargo una solución es pasar la lógica a un procedureencriptado y llamarlo desde el trigger!

    na recomendación. usemos un criterio, no seamos paranoicos! 0uy amenudo, parte de nuestro código tiene que ser compartido con otrospro)eedores, necesitamos disponibili1ar ciertos objetos para que otrospuedan construir sus propios programas a partir de ellos! onecesitamos o uscar todos los paquetes de nuestra base de datos,solamente aquellos que tengan lógica de negocio sensible de lacompa2ia, como algoritmos, paquetes #nancieros, lógica deprocesamiento, mantenimiento de cuentas, paquetes de seguridad, etc!

    "racle no recomienda usar este m$todo para encriptar contrase2as, yaque si abrimos el archi)o generado, podremos )er identi#cadores y

    reconocer algunas palabras que est3n presentes en el código original!

    Antes de comenzar

    (s importante tener en cuenta que estaremos escondiendo el código demiradas ajenas y hasta de la nuestra, ya que una )e1 que el código est3encriptado en la base de datos, no hay orma ni usuario que puedarecuperarlo! Para reali1ar modi#caciones, hay que hacerlas sobre la

  • 8/17/2019 Cómo Ocultar El Código de PL

    2/3

    )ersión de texto original! La recomendación es usar un manejador de)ersiones como repositorio de código, y luego adoptar la pr3ctica deencriptar antes de recompilar!

    Cómo encriptar

    (xiste un ejecutable en 4"567L(89"0(/bin que se llama wrap !Llam3ndolo desde la consola, y pas3ndole el nombre de un script en elpar3metro iname , nos retorna un archi)o de texto .plb con códigointerno, el cual podremos compilar en SQL:plus para crear el objetoalmacenado %o uscado%!

    Ejemplo

    ;amos a encriptar un procedimiento! Para ello ya tenemos el código delmismo en un archi)o ob8proc!sql, copiado en el ser)idor de la base de

    datos! -odo lo que tenemos que hacer es entrar en la consola y ejecutar.wrap edebug!wrap"new"s#l iname!ob"proc.s#l

    PL/SQL ! !@! A Production on -hu 6ug [email protected] > = 7opyright &c' "racle 7orporation B==C, > B! 6ll 5ights5eser)ed!

    Processing ob8proc!sql to ob8proc!plb

    ota. (l Dag edebug E+rap8ne+8sql es necesario para poder soportar el

    nue)o compilador de sql y corregir un bug existente con algunas sintaxisde sql a)an1ado!La salida, es el archi)o encriptado ob8proc!plb, el cual ahora podemoscompilar en SQL:plus!

    SQL$ %ob"proc.plb

    Procedure created!

    (sta pronto! (l código del procedure en la base de datos no es m3slegible, ya sea usando cualquier programa de desarrollo, paquete "racle

    o )ista del diccionario! Sin embargo es per ectamente ejecutable comocualquier otro procedimiento!

    Ejemplo &

    6hora encriptaremos un paquete! Se reali1a en orma similar,recordando que el paquete se compone por especi#cación yopcionalmente un cuerpo! Si bien podemos encriptar ambos, se

  • 8/17/2019 Cómo Ocultar El Código de PL

    3/3

    recomienda en la mayoria de los casos encriptar Fnicamente el cuerpo!Gespu$s de todo, es donde reside la lógica que queremos proteger! Laespeci#cación es Ftil muchas )eces para consultar la #rma de las

    unciones que est3n siendo expuestas, y es amable disponibili1arlaspara el uso comFn!

    -eniendo el cuerpo de nuestro paquete preparado en el archi)oob8pacH8body!sql, ejecutamos.

    wrap edebug!wrap"new"s#l iname!ob"pac'"bod(.s#l

    PL/SQL ! !@! A Production on -hu 6ug [email protected] > = 7opyright &c' "racle 7orporation B==C, > B! 6ll 5ights5eser)ed!

    Processing ob8pacH8body!sql to ob8pacH8body!plb

    Si nuestro paquete ya estaba compilado en la base de datos,recordemos que Fnicamente necesitamos recompilar el cuerpo! Ge locontrario, tendremos que compilar la especi#cación primero!

    SQL$ %ob"pac'"bod(.plb

    PacHage body created!

    (l código de especi#cación del paquete, que ya estaba compilado,continFa siendo )isible, mientras que el body ahora ue ocultado y no

    est3 m3s disponible a la )ista de todos!