システム開発ブログ/ システムソリューション部 Yahoo!ブックマークに登録 Google ブックマーク はてなブックマーク Livedoorクリップ シェア

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

PL/SQLのソースコードを難読化する

山岡
山岡 (2010年2月11日 13:58)
システムソリューション部 / セキュリティ / データベース


PL/SQLをコンパイルするとデータベースに配置されますが、通常、そのPL/SQLはソースコードを見ることが可能です。
もし、見られたくない情報が記述されている場合、どのような対応策をとればよいでしょうか?

対応策の一つとして、wrapというOracleのユーティリティを使うことで、PL/SQLのソースコードを難読化することができます。

wrapユーティリティはOracleをインストールすると使えるようになります。(Database、Clientのどちらでも可)
コマンドプロンプトで入力して使用します。
入力方法は、SAMPLE.sqlを例にすると下記のようになります。

D:\works\plsql>wrap iname=SAMPLE.sql

PL/SQL Wrapper: Release 10.2.0.1.0- Production on 水 1月 27 21:29:45 2010

Copyright (c) 1993, 2004, Oracle. All rights reserved.

Processing SAMPLE.sql to SAMPLE.plb

D:\works\plsql>

上記のように、SAMPLE.sql から SAMPLE.plb というファイルが生成されているのが分かります。

後は、この生成されたSAMPLE.plbを普通のPL/SQLと同様にしてコンパイルを行えば、
ソースコードが難読化された状態でデータベースに配置されます。

Oracle Database 11g Release 11.1.0.7.0 - Production
に接続されました。
SQL> @D:\works\plsql\SAMPLE.plb

パッケージが作成されました。

エラーはありません。

パッケージ本体が作成されました。

エラーはありません。
SQL>

これで、PL/SQLのソースコードの難読化は完了です。

ただし、wrapで難読化されたコードでも解析される可能性はあります。
(もちろん、誰でも解析できるわけではなく相応の実力が必要になりますが。)

「簡単にソースを読ませない」ための対応という位置づけで使用するのが望ましいでしょう。


ちなみに下記が難読化の例に使用したPL/SQLになります。

<難読化前のPL/SQLソースコード> - SAMPLE.sql

-- パッケージ
CREATE OR REPLACE PACKAGE SAMPLE
IS
PROCEDURE MAIN (INC_LOGIN_ID IN VARCHAR2);

END SAMPLE;
/
SHOW ERROR;

-- パッケージボディ
CREATE OR REPLACE PACKAGE BODY SAMPLE
IS
PROCEDURE MAIN(INC_LOGIN_ID IN VARCHAR2)
IS
CO_PGID CONSTANT VARCHAR2(40) := 'MAIN';
BEGIN

-- コードを記述
DBMS_OUTPUT.PUT_LINE('PGID = ' || PGID);

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END MAIN;
END SAMPLE;
/
SHOW ERROR;

<難読化後のPL/SQLソースコード> - SAMPLE.plb

CREATE OR REPLACE PACKAGE SAMPLE wrapped
a000000
340
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
9
4c 85
JdtEtOb/U0tshzT2yXjK2k5/K1Ewg5m49TOf9b9c55/SsqVSQ5t0iwZ055u/nzK9ssBcpTLS
0l5QpdLHSv4Iv/7Sbf71zKaeFkatOa0SVzmI3qPHUr6SvmeBo4Kmph51084=

/
SHOW ERROR;
CREATE OR REPLACE PACKAGE BODY SAMPLE wrapped
a000000
340
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
b
f3 113
oxLkV60ikUSGCTdjDsDwa984s1owgyrQcp4VfHTU7WGu9xP94+MwwDB9g0tEsaDfkKrcELXE
SzLnoc7nnc+hUS2/gqhfrxBnX9CZJ9M74J5vVewvNKi543mTFaJxhft/3esU2hP1uQ0nU8Jr
2/RxtlYxuCuqUZhuIzLtr7yIzVs7YNgiMpFtYU20j0uGZpPLcG2cJmRuK85hBIICYJ3JkedC
1BRp9vY+eCM+ONdS18bsAajU3ByZ6F0THcL4kCR96GG7QFUf6BitUA==

/
SHOW ERROR;


「システム開発ブログ」へのコメントやご意見等ありましたら、 ファンページまでお願いします。  Facebook のファンページ

お問い合せ・情報はこちらの電話番号におかけください:03-3232-2525 お問合せ・資料請求はこちらをクリックしてください
ページのトップ
システム開発・一括受託開発。見積依頼受付中

システム開発専用サイト

システム開発の流れ・手順、実績など。アイロベックスのシステム開発を紹介。

VB .NETを主言語としたWebアプリケーションの開発

要件分析から保守まで、お客様の現場での問題解決だけでなく、IT経営の援護者としてトータルソリューションサービスを提供しています。

MovableType を使ったウェブサイト構築

魅力あるウェブサイトデザイン、構成はもとよりMovableTypeを使用したウェブサイトの作成、JAVA、CGIによる注文フォームの作成等、ビジネスを強力にサポートします。

フォルダーアクセス権限確認ツール『AD-Folder』

Windowsフォルダーアクセス権限確認ツール

フォルダーアクセス権限を一目で確認。使用版を無償でご利用いただけます。

スクール運営を応援する講座情報管理システム『CMS+AD for School』

Webとリアルをつなぐコンテンツマネージメントシステム

Webサイト・モバイルサイト・チラシ(PDF)・カタログ(InDesign)を、簡単かつ正確に作成できます。

「システム開発ブログ」の更新情報をTwitterで。

Twitter公式アカウントに認定されています

「システム開発ブログ」の更新情報をTwitterで。ぜひ、フォローをお願いします。