konekto Inc with PHP , MySQL コネクト株式会社 技術情報コンテンツ


Top

Zend Guard ::: Tips

VM 環境やクラウドでの注意点

VM 環境やクラウドでは、サーバーの再起動のたびに zendid コマンドで取得する値が異なる可能性がございます。
たとえば、Amazon Web Service EC2で Amazon Linux AMI のインスタンスを再起動しますと、
zendid コマンドの実行結果が変わることが確認されています。
サーバーの再起動を頻繁に行われる場合、Zend Guard を利用するためのライセンスの再作成や、
エンコードした PHP スクリプトに対する実行許可の再作成の作業フローもご検討されることをお勧めします。

難読化での注意点

バージョン 4.0.0〜

Zend Guard4.0.0以降の難読化機能の難読化レベル最大で、PHPの関数__call() を使用時、__call() の第1引数となる関数名に大文字と小文字が混在した関数名を使用すると、すべて小文字として認識されます。
これは、PHPの仕様で関数名の大文字と小文字の区別をしていないことに準じ、Zend Guardの除外一覧が関数名の大文字と小文字の区別をしていない為に発生する現象です。

__call() の第1引数となる関数名を変数として使用する場合*1、注意が必要になります。


例:

<?php
 class MyClass{
  function __call( $Name, $Args ){
   echo "[".$Name."]method not exists!!\n";
    if($Name == "BigSmall1"){
     return True;
    }else{
     return false;
    }
  }
 }
 $Call = new MyClass( );
 $ret = $Call->BigSmall1( 1 );
 echo($ret);
?>


実行結果1: 通常の実行

[BigSmall1]method not exists!! 1


実行結果2: Zend Guardの難読化を "最大"/ 除外一覧に "BigSmall1" を指定

[bigsmall1]method not exists!!

zend_loader_file_licensed を使用する

zend_loader_file_licensed を使用したい場合があります。下記の3種類の作業が必要です。

  • プロダクト・ライセンス・ファイルを生成します。
    • このファイルは、PHP スクリプトに実行許可を与えるためにお客様が生成するファイルです。
      メニューバーの ファイル>新規>プロダクト・ライセンス を選択してファイルを生成します。
    • Zend Guard を使用するために弊社からお客様にお送りする「ライセンス」とは異なります。
      Zend Guard のメニューバー>編集>設定 を選択して表示されるダイアログの「ライセンスキー」とも異なります。
      非常によく似た言葉が3種類あり、それぞれ役割が違いますのでご注意ください。
  • Zend Guard のプロジェクトを生成し、ライセンス・サポートを有効にします。
    • プロジェクトの設定のセキュリティータブを選択し、右下のライセンス関連の選択肢のうち、
      「ライセンス・サポートを有効にする」にチェックをつけます。
  • エンコードした PHP スクリプトおよび、プロダクト・ライセンス・ファイルをサーバーに設定します。
    • php.ini に zend_loader.license_path を追加します。値はプロダクト・ライセンス・ファイルの場所です。
    • php.ini を変更するため、反映するには Web サーバーの再起動が必要です。

*1 推奨する使用方法ではありません。

最終更新のRSS