web-dev-qa-db-ja.com

Webアプリケーションのソースコードが難読化によってWebホストに盗まれるのを防ぐ必要がありますか?

Java Webアプリのソースコードを難読化して、Webホストがコードを誤って使用したり、ビジネスを盗んだりできないようにすることは価値がありますか?その場合、どのように対処すればよいですか?私たちは難読化しますか?

私たちは、市場に製品を投入する新しいスタートアップです。製品/ Webアプリケーションのソースコードをどのように保護できますか?

44
Rajat Gupta

悪意のあるホスティングプロバイダーは、単にコードを盗むだけではありません。彼らはそれを変更してバックドアを導入したり、クライアントのデータを盗んだり、ビジネス全体を台無しにしたりできます。 あなたとホストの間に信頼が存在する必要があります。

ソースコードについて。攻撃者がソースコードにアクセスしようとすると、難読化されているかどうかにかかわらず、コンパイルまたは解釈されてソースコードにアクセスできます。

isは、コードを難読化する際の値です。これは、たまに日和見攻撃者が取得することを少し難しくするためです。しかし、もしあなたのホストがあなたを手に入れるために出かけているなら、彼らはあなたを手に入れます。

ソリューション?法則。彼らと契約を結び、何らかの形式の [〜#〜] nda [〜#〜] に同意します。

84
Adi

さて、これは3つのコメントを必要とします:

  • コードを難読化して秘密を保護することはできません。 本当にではありません。コード難読化は、やる気のない攻撃者に対して何らかの方法で機能しますが、強力ではありません。それを突破することに商業的価値がある場合、それは起こります。

  • ホスティングサービスを信頼していない場合は、別のホスティングサービスを探してください。コードの機密性が重要であり、数百ドル以上の価値がある場合は、独自のハードウェアを使用する必要があります。ロックとガードを備えた隔離されたベイスペースを借り、独自のマシンを実行します。

  • コードは、サーバー上でコンパイルされた(バイト)コードとして存在しますが、開発システム内のソースコードや開発者の頭の中に存在します。 thatシークレットにすることはできません。彼らが言うように、秘密を解くのに100万ドルで十分です。

    (この最後のケースでは、それはあなたの計画かもしれません:あなたは、いくつかのより大きな競争相手が単にあなたを買い戻すのを見たいかもしれません。)

知的財産のリバースエンジニアリングと盗用に対する保護は、通常、技術的ではなく法的手段によって確保されます。

38
Tom Leek

いいえ、それだけの価値はありません。コードを盗もうとする人はいません。 10億SaaS製品は、何らかの説明のサードパーティホスティングを使用して個人および企業によって発売されており、ほとんどの場合、ホストによって盗まれた製品。

では、コードを難読化する必要がありますか?もちろん、気分が良くなれば。大丈夫です。有効な脅威からIPを保護していますか?いいえ、そうではありません。これは、Web開発者が開発したブリキの帽子の一種です。

あなたが何をするにせよ、それについて考えることに多くの時間とエネルギーを無駄にしないでください。難読化するかどうかを決定してから、実際の脅威の軽減について心配することに移ります。

29
Xander

最終的には、そのリスク評価を行えるのはあなただけです。コードを難読化して眠りにつくなら、それを試してください。

個人的には気にしないでしょう。信頼できるWebホスティングサービスは、ソースコードの盗難ビジネスではなく、Webホスティングビジネスにあります。彼らがあなたのコードを盗んだとしても、彼らはそれをインストールし、サービスを売り、顧客を見つけ、あなたが彼らに対して起こした訴訟を撃退しなければなりません。報酬が少なすぎてリスクが高すぎる彼らにとって、それはあまりにも多くの努力です。

18
Dan Pichelman

難読化は、明確な攻撃者に対しては効果がなく、少しだけ難しくなります。ホスティングプロバイダーを信用しない特別な理由がある場合は、別の理由を入手してください。

安全を確保したいだけの場合は、機密保持契約およびその他の法的保証を取得して、ホストが物事を乱用した場合にホストを追跡できるようにします。

これらの法的保証があっても信頼できない場合は、ホスティングプロバイダーがオペレーティングサーバーに侵入しない限りデータにアクセスできないように制御および暗号化できる専用サーバーを入手してください。

サーバーに物理的にアクセスできる人が心配な場合は、独自のデータセンターをセットアップするか、物理的なプロパティを監視しながら、同じ場所にある施設のエンクロージャーに物理的にロックします。

ただし、NDAを使用するだけで、信頼できるホスティングプロバイダーであれば十分です。

11
AJ Henderson

私は気にしないでしょう。

2つの理由:

ランタイム解釈言語は、そのように完全に保護することはできません。完全に難読化するには、ランタイムからも難読化する必要があります。そうすると、実行する方法がなくなります。難読化すると、タスクが少し煩わしくなります。また、自分のスタッフにとってデバッグと展開に時間がかかるようになります。

ごく少数のアプリケーションが、人々が実際に盗むためにそんなに厄介な種類の秘密のソースコードを含んでいます。ほとんどの一般的なアプリケーションで機能ごとに機能をコピーするよりも、機能リストと一部の請負業者を取得して「このようなものを作る」と言うだけの方がはるかに簡単です。

9
Bill

自分自身を保護するために予防策を講じる必要がありますが、想像している理由や脅威からではありません。

まず、ホスティングプロバイダーを信頼できない場合は、新しいホスティングプロバイダーを取得します。それについてこれ以上言う必要はありません。

第2に、構築したWebアプリケーションの知的財産は価値があると思っていても、あなたが唯一の人物である可能性があります。競合他社のWebサイトを盗みますか?おそらくそうではありません。トラブルに値するものではありません。 原則として、人々はあなたのサイトを盗むことに興味はありません。通常、自分のニーズに合わせて他の誰かのサイトをカスタマイズするコストは、自分で構築するコストに近いか、それを超えます。

最後に、あなたはすべき攻撃者があなたのコードを取得し、それを使ってあなたを攻撃することを心配します。保存されたパスワード、ユーザーデータベース、プログラミングエラー、および脆弱性-コードはおそらく悪意のある攻撃者にとってジューシーなターゲットを提示します。これは、コードの記述が不十分であるか、サービスが人気がある場合に特に当てはまります。

コードを難読化することは解決策ではなく、いずれにしても役に立ちません。ただし、最小限の特権の原則に従うことを含む、適切なセキュリティ慣行が役立つはずです。アクセスを分離して、1つのシステムまたはコンポーネントが危険にさらされても、攻撃者がアプリ全体をきちんとした小さなバンドルにまとめないようにします。ビジネスの要素の独立性と分離性が高まるほど、攻撃者が1回の移動で障害を起こす可能性は低くなります。

5
tylerl

私は多くのWebアプリケーションをオンラインでホストしています。いくつかのコードは価値がありますはい。しかし、盗まれたとしても誰もそれを維持できないので、私はそれを難読化しませんでした。彼らは最終的には髪を抜くでしょう。私のソフトウェアをひどく欲しがっている人に試してみました。彼はそれをインストールすることも、理解することも、何も得ることもできなかったので、上記のようにして顧客をどのように見つけて販売することができたでしょう。

価値は、データと、お客様が提供し、顧客を満足させるサポートにあります。

私のすべてのデスクトップアプリケーションは、何らかの方法で逆コンパイルできます。逆コンパイルできなかったのはVB6だけだったと思います。私はトリッキーなコーディングとトリッキーな変数名を使用しているため、誰もそれらを維持できませんでした。

5
Cyril Joudieh

クライアント側のコードを難読化しようとしても、セキュリティ上のメリットはありません。十分に決定された攻撃者will投げつけた難読化メソッドをバイパスします。

コードが本当に重要な場合は、ビジネス側に置いておきます。クライアント側のコードを公開し、誰でも誰でも利用できるようにします。

4
user10211

ホスティング業者がデータを盗まないことを信頼しない場合は、より信頼できるホスティング業者を探すか、自分でホストする必要があります。

プログラムコードを委託するだけでなく、すべてのデータとすべてのユーザーのデータも委託します。あなたのホスティング業者があなたのプログラミングを盗むのに十分悪意があると仮定すると、彼らはあなたのユーザーデータを盗んでそれを最高入札者に売るのにも十分に悪意があります。プライバシーポリシーの下で保護することを誓ったと思われるデータ。

ホスティング業者を信頼していないが、自分をホスティングするのは高すぎるという結論に達した場合、自分の物理サーバーを購入して他の誰かにそれをホスティングさせるオプションがありますが、1。ファイルシステムを完全に暗号化して、彼らができないようにしますメンテナンス中にハードドライブのクローンを作成し、2。すべてのネットワーク通信が暗号化されていることを確認して、トラフィックを盗聴できないようにします。

4
Philipp

世界は逆さまになっており、実際の値は通常アプリケーションコードにはありません。コードが収集/変更に使用されるのは顧客データです。多くのWebアプリケーションでは、コードが保護されており、データは単純な保護なしでプレーンテキストで保存されることがよくあります。これは、PCI DSS、HIPAA、およびその他のデータセキュリティ標準が対処しようとしている問題の1つです。

ホスティングプロバイダーが悪意のあるものであると想定すると、顧客データへのアクセス権は、コードを取得するよりもはるかに早く会社を破壊します。

コードの難読化は、あいまいさによるセキュリティの問題に加えて、セキュリティの問題を引き起こす可能性があり、通常のコードベースと同じレベルまたはそれ以上のレベルに吟味する必要があります。

4

コードまたはデータを安全にするために十分に難読化することはできません。できれば、あなたのコードやデータはあなたにも使えなくなります。

難読化によるセキュリティは、難読化の秘密が損なわれていない限り機能します。秘密は決して秘密にしないでください。これはほとんどのデジタル著作権システムの基礎であり、現在までのところ、それらすべてが解読されています。

より技術的な注意として、インタープリター型言語(Perl、PHP)またはバイトコードインタープリター型言語(Java)を使用している場合は、それらに含まれているネイティブコンパイルツールの使用を検討してください。このような高水準言語の多くには、スクリプトのC/C++バージョンを出力したり、ハードウェア用にネイティブにコンパイルしたりするためのツールが含まれています。ネイティブにコンパイルされたバージョンを使用すると、リモートサーバー上にソースツリーを保持する必要がなくなり、パフォーマンスが大幅に向上します。

3
CyberSkull

難読化はコードを隠したり変更したりすることはなく、コードを処理できる他の形式に変更するだけです。

例:クラス名を難読化したい場合、MyHomePageをM4Pageに変更することができます。同様に、addWidgets()のメソッドに他の名前が付けられ、機能ではなく関数名も変更される可能性があるため、メソッドを呼び出す場合難読化されたコードから簡単に実装できます...

3
Ravi Chandran

番号。

明らかに:あなたはいわゆるobcursityによるセキュリティテクノロジー。

私は良い考えではありません!

サードパーティのライセンスからアイデアを保護するために、 GNU GPLクリエイティブコモンズ などのようなパブリックライセンスの下でそれらを公開できます。

3
F. Hauri

頼りになるものだけではなく、あいまいさによるセキュリティも悪くありません。難読化を使用してコードを保護することはできませんが、他のライセンスで難読化を使用することは悪くありません。

0
John The Ripper