Oracle

게시글 보기
작성자 유건데이타 등록일 2015-05-18
제목 PL/SQL WRAPPER (PLSQL source 암호화)
PL/SQL Wrapper

PL/SQL procedure, function, trigger 는 Data dictionary 에 저장이 된다.
그러므로 어떤 유저든 해당 procedure, function, trigger 의 source 를 조회하고
edit 하여 변경할 수 있게 된다.
PL/SQL Wrapper 는 Security Utility 라고 할 수 있다.
위에서 언급한 단점을 보완하기 위하여 oracle 에서 제공하는 Security Utility
이다.

PL/SQL Wrapper 는 PL/SQL source code 를 hexadecimal digits 로 convert 한다.
convert 된 source 자체로 procedure compile 이 가능하다.
또한 user_source view 에도 hexadecimal digits 로 보게된다.


ADVANTAGES:

1. source code 를 확인할 수 없으므로 오용을 막는다.
2. Wrapped source code 는 portable 하다.
3. Platform independent 하다.
4. Import/Export 에서 Wrapped file 을 지원한다.


Syntax :

사용법은 다음과 같다.
unix 의 경우 : wrap 이란 파일이 $ORACLE_HOME/bin 에 위치.
client 의 경우 : wrap(n) - n 은 version number -- 이란 파일이 $ORACLE_HOME/bin
에 위치

WRAP80 INAME= input_filename [ONAME= output_filename]

예) wrap23 iname=dept.sql


Input and Output file content:

PL/SQL wrapper 는 반드시 다음 문장중에 하나로 시작되는 파일이어야만 정상적으로
wrapping 이 되며 만약 그렇지 않다면 에러가 발생하거나 wrapping 없이 output
파일을 생성하게 된다.

CREATE [OR REPLACE] PACKAGE
CREATE [OR REPLACE] PACKAGE BODY
CREATE [OR REPLACE] FUNCTION
CREATE [OR REPLACE] PROCEDURE

* 일반적으로 output 파일이 input 파일보다 크기가 증가한다.
* 디폴트 output 파일의 확장자는 .plb 이다.
* 일단 wrapped output 파일은 edit 할 수 없다.
* 모든 DBMS Package 가 사용가능하다. (web toolkit 용 package 는 사용불가)

Sample

input file = dept.sql
============================================================
CREATE OR REPLACE PROCEDURE dept_sel IS
t_dept varchar2(8);
BEGIN
select dname into t_dept from dept
where loc='BOSTON';
END;
============================================================

output file = dept.plb
============================================================
CREATE OR REPLACE PROCEDURE dept_sel wrapped
0
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
7
95a025ff
1
4
0
9
8 DEPT_SEL:
6 T_DEPT:
8 VARCHAR2:
1 8:
5 DNAME:
4 DEPT:
3 LOC:
1 =:
6 BOSTON:
0

0
0
25
2
0 1d 9a a3 b4 55 6a a0
51 a5 1c 81 b0 a0 ac :2 a0
b2 ee a0 7e 6e b4 2e ac
e5 d0 b2 e9 b7 a4 b1 11
68 4f 17 b5
25
2
0 3 c 31 7 19 1d 21
4 25 26 2d b 38 a 3c
40 44 45 4c 50 53 57 58
5d 5e 63 67 68 8 6d 71
73 7e 82 84 8b
25
2
0 1 b 1 0 :2 1 9 12
11 :2 9 1 :2 b 16 22 1d 22
b e f :2 e 1d :4 4 :8 1
25
2
0 :2 1 3 0 :2 1 :6 3 :6 6 :5 7
:5 6 :2 5 :6 1
8d
2
:4 0 4 :3 0 10 20 7 5 1
:a 0 21 1 4 :2 0 21 2 5
:2 0 3 :3 0 3 7 9 :5 0 c
a 0 1f 2 :6 0 5 :3 0 2
:3 0 6 :3 0 9 11 17 0 18
:3 0 7 :3 0 8 :2 0 9 :3 0 d
14 16 :4 0 1a 1b :4 0 e 12
0 b 0 19 :2 0 1d :3 0 20
12 20 1f 1d 1e :6 0 21 0
2 5 20 23 :2 0 1 21 24
:6 0
14
2
:3 0 1 8 1 3 1 d 1
10 1 f 2 13 15 1 1c
1 b
1
4
0
23
0
1
14
1
2
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0
2 0 1
3 1 0
0

/
============================================================
Comment
등록된 코멘트가 없습니다.