Banco de Dados - Oracle
Criptografia com Wrapper
O Wrapper não é um pacote ou serviço do banco de dados Oracle, ele poderá ser encontrado nos servidores Windows, dentro da pasta Oracle Home\Bin e seu executavel é o Wrap.exe, é um aplicativo executado em MS-DOS. Por isso não se assuste, por que ele é mais simples do que pensamos.
por Rodrigo AlmeidaOlá!
Hoje em dia, para proteger o código fonte e enviar à terceiros ou executar os códigos em outras empresas, usa-se os recursos de criptografia para proteger o código fonte, no Oracle, podemos encontrar esse recurso em um aplicativo externo ao banco de dados, chamado Wripper.
O Wrapper não é um pacote ou serviço do banco de dados Oracle, ele poderá ser encontrado nos servidores Windows, dentro da pasta Oracle Home\Bin e seu executavel é o Wrap.exe, é um aplicativo executado em MS-DOS. Por isso não se assuste, por que ele é mais simples do que pensamos.
As vantagens de utilizar o Wrapper são muitas:
- Segurança nos Códigos PL/SQL;
- Os processos de Import/Export normais aceitam as rotinas geradas pelo Wrapper;
- Referências das variáveis Bind são carregadas ao tempo de carga;
- Apenas os servidores Oracle são capazes de descriptografar essas rotinas, dando exclusividade ao código.
Porém, o Wrapper traz algumas desvatagens na utilização do desenvolvimento, deixando ele de fora dos projetos, pois ele não consegue trabalhar com o bloco de PL/SQL por completo, englobando todas as funções da linguagem, apenas com alguns comandos específicos:
- Create Procedure;
- Create Functions;
- Create Package;
- Create Package body.
Os demais comandos em PL/SQL são ignorados pelo aplicativo, tais como:
- Create Index;
- Create View;
- Create Type;
- Create Database Link e etc.
Por outro lado, um ponto interessante é o modo que ele trata os comentários de código, REM ou --, porque onde à essas instruções na fonte de dados, o compilador de criptografia os remove, a não ser que o desenvolvedor os inclua dentro da parte de especificações do código a ser gerado.
O modo de gerarmos códigos criptografados com Wrapper é muito simples, basta abrirmos o MS-DOS e dentro das pastas dos arquivos fontes, executar a linha de comando abaixo:
wrap iname=ra_ex.sql oname=ra_ex_s.plb
Na linha de comando, percebemos a utilização de apenas dois parâmetros, um de entrada e outro de saída dos arquivos. No parâmentro de entrada, o INAME (INPUT NAME = Nome de Entrada) é onde iremos dizer qual arquivo será criptografado, sempre com extensão .SQL, e o parâmetro de saída o ONAME (OUTPUT NAME = Nome de saída) é onde vamos dizer qual é o nome do arquivo que será gerado com extensão .PLB, esse será o resultado final, o código criptografado, caso não colocamos essa especificação, e executarmos o aplicativo, será gerado um arquivo .PLB com o mesmo nome do arquivo de entrada, essa função é padrão do Wrapper.
Para fixar os processos de criptografia do Wrapper, vamos fazer um exemplo em SQL e abrir o código gerado em PLB.
Arquivo ra_ex.sql
SQL > | CREATE OR REPLACE FUNCTION FUNCIONARIO (CARGOFUNC IN VARCHAR2) IS |
2 |
CURSOR C1 IS SELECT NOMEFUNC FROM EMPREGADOS WHERE CARGO = CARGOFUNC; |
3 |
NOME VARCHAR2(100); |
4 |
CONTADOR NUMBER(10) := 1; |
5 |
BEGIN |
6 |
DBMS_OUTPUT.ENABLE(1000); |
7 |
FOR R1 IN C1 LOOP |
8 |
DBMS_OUTPUT.PUT_LINE ("NUMERO DE FUNCIONARIOS : " || TO_CHAR(CONTADOR)); |
9 |
CONTADOR = CONTADOR + 1 |
10 |
END LOOP; |
11 |
DBMS_OUTPUT.PUT_LINE ("TOTAL DE FUNCIONARIOS NESSE CARGO :" || TO_CHAR(CONTADOR)); |
12 |
REM CREDITOS DO EXEMPLO |
13 |
DBMS_OUTPUT.PUT_LINE ("EXEMPLO POR RODRIGO ALMEIDA - www.usinabrasil.com.br") |
14 |
RETURN CONTADOR; |
15 |
END FUNCIONARIO; |
16 |
/ |
Após passar pelo Wrapper, o código será exibido assim:
Arquivo ra_ex_s.plb
CREATE OR REPLACE FUNCTION FUNCIONARIO WRAPPED |
ABCD |
ABCD |
0 |
------------------------------------ |
1ENABLE: |
1PUT_LINE: |
0 |
21 |
0 |
7D 45 AM 3E 95 GY 4H |
BD 3W 1Q C9 F8 AG GF |
0G VQ A7 32 S9 6J 1L |
A1 X5 J7 51 S8 U7 ZA |
1W 46 ID Z9 PA QN 4I |
QV BT 6S 3K N6 DS Q7 |
12 J3 SY CQ ZP SE TT |
6H M0 LS XW VH TK D6 |
Em um modo geral o código fonte do arquivo PLB será sempre maior que o SQL, porém com um criptografia em seus dados de saída.
Com a utilização dos métodos de criptografia com o Wrapper, a troca de códigos em PL/SQL entre empresas fica mais seguro e garante os créditos de desenvolvimento do script para o programador de origem. Ajundando a todos.
Espero que tenham gostado e até a próxima.
Rodrigo Almeida
- Exportação de dados do SQL Server para o Oracle com assistente de importação do SQL ServerSQL
- Trigger Oracle (Básico)Oracle
- Análise de desempenho entre os bancos de dados SQL Sever x OracleSQL Server
- Uma libertação chamada OLAPOracle
- A importância da Qualidade dos dados nas empresasSQL Server