2016년 5월 25일 수요일

[SQL] PL/SQL WRAPPER (PL/SQL 소스 암호화)



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


/



참고자료

댓글 없음:

댓글 쓰기