El blog de oracle en Español

Masquer / obscurcir le code PL/SQL (WRAP)

Il est parfois nécessaire de masquer (obscurcir) notre code source PL/SQL. Cet utilitaire doit être utilisé avec discernement, il ne s'agit pas de masquer tout le code disponible, mais uniquement celui qui, pour des raisons de sécurité, ne doit pas être partagé avec des tiers.
La méthode utilisée a traditionnellement été réalisée à l'aide de l'outil WRAP, que nous détaillons dans cet article À partir de la version 10g R2, il est possible d'effectuer cette action avec le package DBMS_DDL.WRAP, dont nous parlerons dans article .
Il est important de connaître certaines de ses limites avant de l'appliquer, en particulier dans les environnements de production. Il est très important de disposer d'une copie du code PL/SQL et d'un contrôle des versions de celui-ci avant d'appliquer la méthode « wrap » à notre code.

Fondamentalement, les limites de l'utilitaire WRAP sont les suivantes :

Los ficheros ofuscados, en aquellos donde hemos usado wrap, no son compatibles entre releases de Oracle Databases.
No se puede usar wrap en código de triggers.
No es seguro para securizar password o nombres de tablas.
No detecta problemas de sintaxis o errores de código, generados en nuestro código sin ofuscar.
El código ofuscado es más largo que el original.
Wrap solamente ofusca el body de un package o el type, pero no su especificación.

Pour voir comment cela fonctionne, créons une fonction assez simple, que nous obfusquerons avec wrap.

CREATE OR REPLACE FUNCTION dia_today_day RETURN VARCHAR2 AS
BEGIN
RETURN TO_CHAR(SYSDATE, 'DD-MON-YYYYY HH24:MI:SS') ;
END dia_today ;
/

Nous vérifions qu'il fonctionne :


select today_day from dual ;

TODAY_DAY
------- -------
31-AUG-2023 20:47:53

Nous copions le code de notre fonction dans le système d'exploitation.

[oracle@oracleconraul u01]$ cat fonction_jour_d'aujourd'hui.sql
CREATE OR REPLACE FUNCTION jour_d'aujourd'hui RETURN VARCHAR2 AS
BEGIN
RETURN TO_CHAR(SYSDATE, ‘DD-MON-YYYY HH24:MI:SS’);
END jour_d'aujourd'hui;
/

Nous pouvons voir dans SQL-Developer l'apparence normale de la fonction avant l'application de l'obscurcissement.

Dans le système d'exploitation, nous lançons la commande pour obscurcir le code PL-SQL.

La sintaxis es:
wrap iname=<fichero entrada> oname=<fichero de salida ofuscado>

[oracle@localhost u01]$ wrap iname=funcion_dia_de_hoy.sql oname=funcion_dia_de_hoy.out
PL/SQL Wrapper: Release 19.0.0.0.0 – Production le jeudi 31 août à 21 h 17 min 23 s 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle et/ou ses filiales. Tous droits réservés.
Traitement de fonction_jour_d'aujourd'hui.sql vers fonction_jour_d'aujourd'hui.out

L'utilitaire signalera le code obscurci pour exécution.

CREATE OR REPLACE FUNCTION dia_de_hoy wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
74 b6
LH4SgLm3AMbYAySR+WVH9QmeSoAwg8eZgcfLCNL+Xlr6WV+uofByhWTD58CyvbKbXufHdMAz
uHRlCbh0i8DAMv7ShgmpoQLOxtYaIazv1kx2hHEyjndMcfUQc3P17zdnr2pqhduXsevFV1RM
66tN+j1y6a+V638ZlSoZaiQl7Pumz30sVg==
/

Copiez le code et exécutez-le (SqlPlus, SqlDeveloper, etc).

Désormais, toutes les nouvelles sessions se connectant à la base de données n'auront pas accès au code sous une forme lisible, et le code sera caché aux utilisateurs.





Tags:
Oracle ACE Associate