9.21.2010

Encoder facilement son code Pl/SQL

Comme Oracle le fait pour certains de ses packages (ex: dbms_system), il peut être intéressant d'encrypter la source d'une procédure, fonction ou package (signature et/ou corps). Pour ce faire, Oracle fournit un utilitaire nommé "wrap.exe". On le retrouve dans le répertoire %ORACLE_HOME%\BIN d'une installation du SGBD Oracle ou encore avec le client 10g.

Dans le cas d'un package, une pratique courante est de laisser la signature visible et de ne cacher que son implantation. De plus, il est crucial de toujours conservé la source originale du code puisqu'on ne peut éditer du code encodé. Le fichier encrypté (.plb) ne peut à son tour être décodé.

Son utilisation est simple:
%oracle_home%\bin\wrap iname=code_source_lisible.sql oname=code_source_encrypte.plb
où iname est le fichier en entré (claire) et oname le fichier en sortie (encodé).

Par la suite, il ne reste qu'à exécuter le script dans Sql*Plus:
sql> @code_source_encrypte.plb

À noter que wrap n'encode pas le code d'un trigger. Si vous voulez palier ce problème, simplement appeler une procédure encodé à l'intérieur du trigger.

Aucun commentaire:

Mes items partagés de Google Reader