私は現在、顧客のクレジットカード情報をローカルに保存する可能性のあるphpプロジェクト(インターネットショップ)に取り組んでいます。そのため、IonCube を使用して php ファイルを暗号化すること、特に対称暗号化アルゴリズムの設定 (暗号化/復号化キー、IV) を含むファイルについて考えていました。したがって、IonCube で暗号化されたファイルと同様のソリューションは解読できるように見えるため、セキュリティのレイヤーが追加されるかどうかはわかりません。ありがとうございました!
3 に答える
IonCube は、ここでは適切なソリューションではありません。次の行に沿って何かを含むファイルをエンコードする場合:
<?php $SecretValue = "xyzzy"; ?>
シークレット値を復元するのは簡単です。
<?php require("encoded.secrets.php"); print $SecretValue; ?>
したがって、IonCube エンコーディングは基本的にここでは役に立ちません。
コード保護に関しては、ionCube と Zend は問題ありません。逆コンパイル サービスによって、エンコードされたファイルから使用可能なコードが生成されたとしても、これは通常、エンコードとライセンスの適用によるメリットを損なうことはほとんどなく、長期的には収益の増加にさえつながる可能性があります。ソフトウェアプロバイダーの用語。
ただし、データの隠蔽はまったく異なります。PHP と関連するすべてのライブラリ ラッパー、およびライブラリ自体はオープンソースであるため、簡単に変更できることに注意してください。PHP の関数との間で送受信されるデータは、PHP の内部構造を変更するだけで簡単に公開できます。MySQL へのデータベース パスワードを確認したいですか? mysql_connect() ラッパーまたは基礎となる MySQL ライブラリを変更して、詳細をログに記録するだけです。一部のエンコーディング システム (ionCube など) は、PHP 以外のファイルを暗号化し、ランタイム コンポーネントのクローズド ソース ルーチンを介して実行時に復号化できます。これにより、場合によっては、mcrypt などのオープンソース PHP ルーチンよりも利点が得られます。
一部のシステム、たとえばionCubeで引用されている例では、daswuffは完全に間違っているわけではありません。ファイルがエンコードされていないファイルに含まれないように保護することも、「インクルード攻撃」と呼ばれるメカニズムを介してエンコーダの別のコピーによってエンコードされたファイルを保護することもできます。保護"。とはいえ、機密データを変数、特にグローバルに格納するのは適切な方法ではありません。このようなデータは、誤解を招く名前の関数によって返され、特定の方法で呼び出されない限り動作が異なる可能性があるため、より適切です。たとえば、「魔法の」値で呼び出されない限り時間を返す mytime() という関数。
ファイルをエンコード/暗号化する場合は、Zend Guardが最高の 1 つになるはずですが、他の人が言っているように、ファイルにアクセスできれば心配はほとんどありません.