web-dev-qa-db-ja.com

ionCubeでコンパイルされたコードはどの程度安全ですか?

私は ionCube を使用して、作成したコードを顧客から隠蔽しています。

コード内にパスワードを保存し、ionCubeエンコーダーでそれをコンパイル(暗号化ではない)する場合、潜在的なハッカーがそのパスワードを入手する可能性はありますか?

たとえば、ionCubeでコンパイルされたPHPコードの一部をリバースエンジニアリングすることは可能ですか?

または、完全な暗号化されたソースファイルがある場合、コンパイルされたページで get_defined_vars() のようなコマンドを送信できますか?

4
rubo77

はい、コンピュータ内で実行されているものはすべてリバースエンジニアリングすることが可能です。それは常にある時点で常にメモリにロードされ、その時点で暗号化/復号化/解凍/e.t.c。されるため、プロセッサはそのようなコードを処理できます。

あなたのケースでは、変数にハードコードされたパスワードが最終的に使用されます。そして使用できるように、最初は暗号化されていません...

7
woliveirajr

通知:この回答の作成者は、ionCubeと提携しています。 ionCubeの従業員が提出した回答やコメントは、善意をもって、利益相反の対象となる可能性があることに注意してください。


エンドユーザーやほとんどのPHP開発者でさえ知識が不足しているため、「おせっかいな顧客は、コンパイルされたコードから暗号化キーを抽出するのにそれほど問題はないだろう」などの考えが多少伸びますが、ここでの答えは良いです。 PHPエンジンを変更してランタイムデータを有効な方法で公開するために必要です。

バイトコード保護は、コードを別の言語であるバイトコードにコンパイルすることに基づいており、バイトコードとメタデータを発見しにくくし、取得するかどうかを理解するために最善を尽くしています。 ionCubeはコードをコンパイルし、さまざまな手法を使用してバイトコードを保護し、非標準のPHP実行エンジンを使用して、PHPとは異なるバイトコードを使用できるようにします通常生産します。これは、他のいくつかのソリューションと比較すると、ランタイムローダーコンポーネントのサイズが比較的大きいことを説明しています。

PHPのようなget_defined_vars()などの関数を使用すると、同じエンコーダーのコピーによって生成されたエンコード済みファイルでのみ機能するようにファイルをエンコードできるため、失敗する可能性があります。エンコードされたファイルがエンコードされていないファイルに置き換えられた場合。同様に、変数の難読化を使用すると、そのような関数の結果が混乱する可能性があります。

PHPがオープンソースであっても可能なことにはがある制限があります。また、保護の目標とランタイムパフォーマンスのバランスをとる際のトレードオフ、および特に、共有サーバー。たとえば、mysqli_connect()へのパスワードは十分に保護されている場合がありますが、ハッカーはmysqlライブラリまたはPHP mysqliライブラリラッパーを変更し、PHPを再コンパイルして、実行時のパスワード。ただし、これは実際には問題にならない場合があり、デフォルトのPHPインストールとの互換性が不要であれば、セキュリティを強化する方法があります。ユースケースに最も適した戦略を理解するために、ionCubeに連絡してアドバイスを得ることが推奨されます。

1
Nick

あまり安全ではありませんが、外部からの干渉を回避するために使用できます。 100%中50%未満の安全性だと言います。古いバージョンのionCubeを部分的に逆コンパイルするためのインターネット上のツールはたくさんあります。

例- ionCubeデコーダー

コードを保護するために、他の暗号化ツールを選択することをお勧めします。

1
Jijo John