web-dev-qa-db-ja.com

OracleのWRAPを使用してPL / SQLコードを難読化するメリットはありますか

Oracleのストアドプログラムユニット(プロシージャ、関数、パッケージ、およびタイプ)は、 [〜#〜] wrap [〜#〜] 機能を使用して難読化できます。

「覆い隠しによるセキュリティ」に関する一般的な議論とは別に、ラッピング機能の使用に特定の問題はありますか?

10
Gary

Oracle 10gおよび11gメカニズムでラップされたコードに使用できるアンラッパーがあります。これらには、オンラインの「unwrapper」とPythonで記述されたunwrapperのソースコードの両方が含まれます。

そのため、ラッピングを行っても、そのレベルのアクセス権を持つユーザーがソースコードを取得することはほとんどありません。

* _DEPENDENCIESビューを使用して、SQLトレースを通じて、またはDBMS_TRACEを使用して、コードの性質に関する追加のインジケーターを取得できます。

依存関係ビューには、プログラムから直接または間接的に呼び出される可能性のあるテーブルやその他のオブジェクトが表示されます。 SQLトレースは、プロシージャへの特定の呼び出しの結果として実行されたSQLを示します。これには、たとえば、暗号化呼び出しで使用されるソルトを示す「バインド変数」を含めることができます。 DBMS_TRACEは通常はインストールされませんが、インストールして有効にすると、行番号とプロシージャ/関数呼び出しの観点から、コードを通過するパスを追跡するために使用できます。

コードが分析されないように保護するには、最初の手段としてパッケージを使用する必要があります。プロシージャと関数を使用すると、プログラムの実行を許可されているデータベースユーザーであれば、コード全体を利用できます。パッケージでは、仕様(プログラム名と引数名/データ型)のみが使用可能であり、本体の実際のコードは、プログラムの所有者と高いデータベース権限を持つユーザー(通常はDBA)にのみ表示されます。

8
Gary

PL/SQLのソーステキストの折り返しは、PL/SQLコードを読み取るための技術的な手段を排除するのではなく、むしろ次の1つ以上の目標を達成するのに役立つようです。

  1. 初心者のソフトウェア開発者がパッケージや型のインターフェースではなく実装に依存するのをやめさせるため。そのため、ソーステキストの折り返しは、これらの実装が変更された場合に、下位互換性の問題を回避する傾向があります。
  2. 誰かがこれらの実装を読むとすれば、その人は米国のDMCA法に違反するか、少なくともそれらの実装を読むことを困難にすることを明確に意図した措置に直面して読む意図を示すだろうという主張を支持するため読んだ。
  3. タスクについてかなりカジュアルでリソースに制約のある人がプログラムテキストを取得できないようにするため。
2
minopret