Python、HTML、CSS、JavaScriptを使用して開発されたWebアプリケーションがあります。
顧客は自分のマシンにインストールして、LAN経由で使用します。つまり、顧客は自分のマシンのいずれかにWebサーバーをセットアップします。
Webアプリケーションなので、すべてのソースコードは、webserverのドキュメントルートディレクトリで顧客に公開されています。ドキュメントルートディレクトリのソースコード全体を、Webアプリケーションの動作に影響を与えないように暗号化したいと考えています。
この目的でPython、HTML、CSS、JavaScriptを暗号化する方法はありますか?.
顧客が実行できるプログラムを取得すると、顧客は十分な時間とスキルがあればリバースエンジニアリングすることができます。それは人生の事実です。
本当に停止したい場合は、ソフトウェアをホストして実行する必要があります( SaaS )
そうは言っても、Python=のようなものはCよりも簡単になります。これを、質問した3つの部分に分割しましょう(さらにいくつか))。
[〜#〜] html [〜#〜]
ここで何をしても、ブラウザでは(SaaSモデルでも))復号化されるため、サーバーで暗号化しても意味がありません。FirefoxやChromeはきちんとフォーマットします。
[〜#〜] css [〜#〜]
上記をご覧ください-時間を無駄にしないでください
Javascript
Yahooには obfuscate ができるツールがあります。 YUI Compressor を試してください。これをサーバー側で暗号化しないでください。暗号化されていないクライアントに提供する必要があるため*、目的を達成できなくなります。
Python
これは、ビジネスロジックを保護するために本当に時間を費やしたい唯一の場所です。ディスク上での暗号化や、実行時の復号化など、Googleにはいくつかの方法があります。これらすべてのメソッドには、パフォーマンスのヒットや、復号化機能を提供する必要がある(したがって、誰でも復号化できるようにする)などの問題があります。
あなたのコードを盗むことに熱狂していない人たちを止めるためのあなたの最高のビートは、- (あなたのPythonコード を難読化する)を使用することでしょう。
まとめ
誰かが取得するのを阻止できる唯一のコードは、あなたが彼らに与えないコードです。 HTML、CSS、Javascriptは常に常にをユーザーのマシンで使用できるようにするため、必要に応じて盗むことができると想定します。頑張ってください。
サーバーコードを保護するために、only sure-fire methodはそれらに与えないで、SaaSモデル。
それが不可能な場合、あなたができる最善のことは彼らのためにそれを難しくすることです。
テスト
常に、顧客に提供する製品バージョンでテストしてください。これにより、特別なビルド手順(難読化や縮小など)によってソフトウェアが破損することがなくなります。
退屈なビジネススタッフ
したがって、上記のすべて(およびあなたの質問)は、技術的な側面からこの問題に対処しています。コインの反対側は、ビジネス/法務側です。
クライアントの数が少ない場合は、各クライアントにソフトウェアの異なる「透かし入り」バージョンを提供できます。これにより、盗まれたソフトウェアをソースに追跡し、適切な法的措置を取ることができる可能性が高まります。
忘れないでください。真面目な仕事をしている場合は、問題が発生した場合に、ソフトウェアの所有権を証明および強制する方法について弁護士に相談することをお勧めします。
*厳密には真実ではありません。暗号化して提供し、他のJavascriptで即座に解読することができますが、パフォーマンスヒットを追加し、とにかく攻撃者に解読者を提供する必要があるため、これはほとんど無意味です...
いいえ。
HTMl、CSS、およびJavaScriptブラウザーはプレーンテキストとして読み取る必要があるため、暗号化できません。あなたができる最善のことはそれを難読化することです。
Pythonの場合、それをDLLにコンパイルすることができるため、クライアントにソースコードを提供することは明白ではありませんが、逆コンパイルは可能です。
Arguments Sakeの場合、クライアントがこれを使用するためにCustom Web serverを提供したとしましょうCustom Web serverは暗号化されたPythonファイルを読み取ってからコンパイルして実行します。ハッカーはカスタムWebサーバーを逆コンパイルすることができますそして、復号化モジュールと暗号化キーへのフルアクセスを取得します。
コード(またはデータ)を任意の形式で、他の誰かのハードウェアで使用している場合、コードが盗まれる可能性があります。
これの私の証明:すべてのウェアーズサイトを見るだけで、すべてがハッキングされます。
Pythonについては、これに対処する方法はいくつかありますが、手間のかかる作業をいくつか行う必要があります。ここにいくつかの考えがあります:
.pycファイルのみを含むZipファイル。これは、正確なPython=バージョンとアーキテクチャを指示するか、サポートしているアーキテクチャごとに1つずつ、複数の.Zipファイルを提供する必要があることを意味します。
PEP 302では、独自のカスタムインポーターを統合できるimportlibが導入されました。カスタムインポーターを必要とする例は、py2exe、freezeなどです。独自のインポーターを統合して、暗号化されたZipファイルやその他の形式を読み取ることができるはずですが、そのコードの一部を独自のモジュールとしてコンパイル済みのCに挿入したいと思うでしょう。
JavaScriptについては、クライアント側を意味する場合は、いいえ。しかし、node.jsの場合、ソースを使用する代わりに、利用可能な場合は、コンパイルされたバージョンのJavaScript(.pycに類似)をロード/保存するV8エンジンでいくつかの作業を行うことができます。おそらく、その作業を行うにはC開発者が必要であり、node.jsの特定のバージョンへのパッチ適用が必要になる場合があります。