2013-07-28 3 views
7

Platform Securityの最後のセクションで、PhoneGapアプリでソースコードを保護する方法について説明しました。PhoneGapソースセキュリティ

リバースエンジニアリングはPhoneGapを使用する多くの人々の関心事です。アプリケーションのバイナリを開き、アプリケーションのJavaScriptソースコードを参照するだけで済みます。悪質なJavaScriptコードを追加したり、アプリケーションを再パッケージしたり、アプリのフィッシング詐欺でアプリストア/マーケットに再提出したりすることさえできます。この方法は、JavaやObjective-Cのいずれかを逆コンパイルするのと同様の簡単な作業であるため、PhoneGapで書かれているかどうかにかかわらず、どのアプリケーションでも実行できます。

PhoneGapは、アプリケーション開発者が実行時にアプリケーションでJavaScriptをダウンロードし、そのJavaScriptを実行し、アプリケーションが終了したときに削除できるため、このセキュリティ上の懸念を実際に乗り越えることができます。このようにして、デバイスが休止状態にあるとき、ソースコードはデバイス上に決して存在しません。これは、Objective-Cコードを動的に実行するというApp Storeの制限に加えて、JavaやObjective-Cのはるかに難しい見通しです。

しかし、他の人が私のソースコードをサーバーにダウンロードしないようにするにはどうすればいいですか?

+1

この質問は、JavaScriptアプリケーションを難読化することについてのものであり、特別なphonegapではありません。 –

+0

私もこの質問への回答に興味があります – Paul

+0

@ChristianKuetbach:私はJSコードを難読化することを求めていません。私は実際に実行時に私のJSコードをダウンロードすることによってPhoneGapが私のコードをどのようにして安全にできるか興味を持っています。私はこの方法を実現する方法を知りたい。 – cwlaualex

答えて

2

私はあなたのコードに注釈をつけてから、それを難読化して特定の最適化を実行するGoogleのClosure Compilerで実行することをお勧めします。これは、人々があなたのコードを読むことを非常に困難にしますが、それを超えてJSがクライアント側の言語であるという事実を生きなければならなくなります。

+0

私はClosure complierを試しましたが、コードに注釈を付ける意味はありません。私はJSの性質を理解しており、スクリプトはユーザーから隠すことができません。私は、ドキュメントに記載されている方法論についてもっと理解することに興味があります。それは実際には全く解決策ではないのですか、私は何かを見逃しましたか? – cwlaualex

+0

私はPhoneGapを使ったことは一度もありませんが、コードにいくつかの関数や他の名前があると想像していましたので、少なくとも注釈を付ける必要があります。それらを混乱させる。しかし、[この質問に対する回答](http://stackoverflow.com/questions/13260480/using-closure-library-on-phonegapandroid-application)と[this thread](https://groups.google.com/フォーラム/#!msg/closure-library-discuss/s05FrsCuvK0/yQg4BvJNmTwJ)が私よりもあなたに有益かもしれません。 – Troy

1

どのように次のパターンについて:

  1. 埋め込みサーバーに対してユーザー/デバイス認証を可能にし、あなたのアプリとブートストラップのJavaScript。ブートストラップコードを難読化するためにできることをしてください。
  2. は、アプリケーションが
  3. を閉じたときにJavaScriptが、それを削除することを実行して、実行時にメインロジックJavaScriptをダウンロードし、認証後
  4. (認証されたユーザがアクセスすることができる)サーバー上JavaScriptonなどのアプリのメインロジックをキープ

継続的なアップグレードは無駄なく続きます。

1

私は示唆している:

  • 最も難読化/ JSコードのすべて。 GoogleのClosureコンパイラは良いオプションです。

アプリケーションが起動すると:

  • は、動的なデータが
  • は、アプリケーション起動時に、最初に押しフェッチのためのサーバーへの呼び出しを行う前に検証する必要があり、デバイスに保存されているいくつかのハッシュコードを持っていますアプリケーションのハッシュコードを確認するアプリケーションの真正性を確認するとサーバーがハッシュコードをチェックして、アプリケーションの正当性を確認します
  • サーバーがアプリケーションを確認したらサーバーは別のハッシュコードを送信したり、同じハッシュコードを使用したりすることができます。プラスのサーバーもカスタムクッキーのパラメータを設定することができます...それはすべて、サーバーの通信&のアプリケーションのアーキテクチャに依存します。あなたのニーズに最も適したものを設定してください
  • アプリの正当性が確認されたら、デバイスからサーバーへのすべてのコールに同じハッシュコードまたはクッキーが含まれている必要があります。

代わりに、新しいjsコードを送信すると、jsonの動的データをプッシュし、jsコードをデバイス上で難読化しておく方が効果的です。