web-dev-qa-db-ja.com

保護する最良のソリューションPHP暗号化なしのコード

まず、奇跡を探しているわけではありません... PHPの仕組みと、暗号化を使用せずにクライアントからコードを隠す方法は実際にはないことを知っています。実行中のサーバーにインストールされる拡張機能のコスト。

しかし、私は別のものを探しています...私は自分のコードを暗号化することも、それを難読化することも探していません。多くのPHP暗号化/難読化コードなしのスクリプトがありますが、それらは商用アプリケーションです。たとえば、vBulletinやIP.Boardフォーラムアプリケーションなどです。

これらの人がアプリケーションにどのアプローチを使用しているか知りたいだけです...

他の提案も受け付けています。

私は独身で、会社で働いていません。私の製品も非常に具体的で、あまり売れません。誰かを訴えるか、商用ライセンスを準備するために法律専門家に相談する余裕がないことを皆さんに知ってほしいのです。私は単純な製品を保護するための簡単な方法を探しています、それが本当に可能であれば、どういうわけか...

68
Ricardo Amaral

物を難読化することは、正当な法律を遵守している顧客に不便をかけるだけです。一方、あなたをはぎ取ろうとする人々は、とにかく顧客を支払うターゲットではありません。 (難読化に関する他の考えを編集)

ソフトウェアを保護するためのもう1つの提案:コードが製品の価値の不完全な部分であるビジネスモデルを作成します。たとえば、サイトで管理するデータへのアクセスとともに製品ライセンスを販売したり、サブスクリプションモデルまたはカスタマーサポートで製品のライセンスを取得したりします。

EULAの設計は法的な問題であり、コーディングの問題ではありません。使用する製品およびWebサイトのEULAテキストを読むことから始めます。興味深い詳細が見つかるかもしれません!

プロプライエタリライセンスの作成は非常に柔軟であり、厳密にはコーディングに関するものではないため、StackOverflowの意図した範囲を超える可能性があります。

頭に浮かぶEULAの一部:

  • 製品にバグがある場合、または損傷を引き起こす場合の責任の制限。
  • お客様がライセンスされたソフトウェアをどのように使用できるか、どのくらいの期間、何台のマシンで、再配布権の有無にかかわらず、綴ります。
  • あなたが彼らのサイトを監査する権利を与えるので、あなたはライセンスを強制することができます。
  • EULAに違反するとどうなりますか。ソフトウェアを使用する特権を失います。

法律上の専門家に相談して、商用EULAを準備する必要があります。

edit:このプロジェクトで弁護士の費用を正当化できない場合は、次のリソースをご覧ください。

34
Bill Karwin

目的を検討する必要があります。

1)他の人がコードを読み取ったり変更したりできないようにしようとしていますか?はいの場合、難読化/暗号化ツールが必要です。 Zend Guard を使用しましたが、成功しました。

2)コードの不正な再配布を防止しようとしていますか?EULA /独自のライセンスにより、それを防止する法的権限が与えられますが、 tは実際に停止します。キー/アクティベーションスキームを使用すると、使用状況を積極的に監視できますが、コードを暗号化しない限り削除できます。 Zend Guardには、特定のスクリプトを特定の顧客のマシンにロックしたり、必要に応じて期間限定のコードを作成する機能もあります。

私はvBulletinなどに精通していませんが、彼らは正しいことをするために暗号化/難読化するか、ユーザーを信頼する必要があります。後者の場合、彼らは望ましくないと思われる行動を禁止するEULAの保護と、EULAの違反をバックアップする法的システムを持っています。

ソフトウェアを保護する法的措置を講じる準備ができておらず、暗号化も難読化もしたくない場合、オプションはa)EULAでリリースするので、必要な場合は法的オプションがありますそして、最善の結果を期待するか、b)オープンソースライセンスの方が適切かどうかを検討し、単に再配布を許可します。

14
Jim OHalloran

PHPコンパイラを使用できます。

Roadsend

phc

8
grepsedawk

私はしばらくの間VBulletinのソースコードを見ていませんが、2003年頃にVBulletinのソースコードを使用していた方法は、コード内にサーバーへの呼び出しを埋め込むことでした。 IIRCは、非常に長いコード行(200〜300文字以上)であり、いくつかの文字列連結などに分割されていました。

海賊版を作成しても「悪い」ことは何もありませんでした-フォーラムはまだ100%機能していました。しかし、サーバーのIPは他の情報と一緒にログに記録され、彼らはそれを調査して法的措置を講じました。

ライセンス番号はこの呼び出しに埋め込まれているため、特定のライセンスコピーが実行されているIP/Webサイトの数を簡単に追跡できます。

6
Alarion

自分でホストし、Web経由でアクセスする「クラウドアプリ」を作成できない場合は、仮想サーバー(VMWare、Parallels、Sunなど)を使用して仮想アプライアンスを作成し、「lite 「その上のLinuxのバージョン。 PHPコードを仮想環境に配置し、サーバーに仮想マシンをインストールします。ルートへのロードを防ぐ方法を作成してください。もちろん、これには物理的にクライアントを訪問する必要があります。

2
McG

私の意見では、しかし、念のため念のために、もしあなたのPHPコードプログラムがスタンドアロンモデル用に書かれているなら...最良の解決策はc)Phalanger(.NET)のようなコンテナでPHPをラップすることです。誰もが知っているように、特にプログラムがWindowsユーザーを対象としている場合は、システムにしっかりとバインドされています。 .NET/VB/C#または.NET prog.lang.familyセットで知っているもののようなWindowsプログラミング言語で独自の保護アルゴリズムを作成できます。

1
achy

ソフトウェアを 独自のライセンス で配布します。法律は彼らの権利を保護し、顧客がソースを再配布することを禁止していますが、実際にそうすることは困難ではありません。

ただし、ご存じのとおり、ソフトウェア製品の著作権侵害(著作権侵害)は かなり一般的な現象 です。

1
Eran Galperin

SD PHP Obfuscator を参照してください。 PHPファイルの巨大なシステムを処理します。 PHPサーバーにランタイム要件はありません。追加のランタイムオーバーヘッドはありません。

[2016年5月編集]最近の回答では、ZendはPHP5.5を処理しません。 SD PHP Obfuscatorはサポートします。

0
Ira Baxter

PHPアプリケーションを他のアプリケーションから本当に保護する唯一の方法は、ソースコードを共有しないことです。コードをオンラインのどこかに投稿したり、何らかの媒体、またはコードにアクセスできる他の人からコードを顧客に送信したりする場合。

コードのすべてのコピーに一意の透かしを追加できます。そうすれば、リークを単一の顧客にまで遡って追跡できます。 (しかし、コードはすでにあなたのコントロールの外にあるので、それはあなたを助けますか?)

私が見るほとんどのコードには、ライセンスとおそらく保証が付属しています。スクリプトの上部にある、スクリプトを変更しないように指示する行で十分かもしれません。自己;非オープンソースコードを見つけた場合、プロジェクトでは使用しません。たぶん私は少しだまされていますが、私は私が非OSSコードを使用しないことを期待しています!

0
qualbeen

Zend Guardはphp 5.5をサポートしておらず、簡単に元に戻すことができます。難読化の場合は http://www.ioncube.com に進みます。 http://wwww.phplicengine.com は、リモートまたはローカルでスクリプトのライセンスを取得できます。

0
Igdrazil