JavaScript アプリを保護する必要がある理由は、次のとおりです。
- ハッカーがコードをリバース エンジニアリングするのをより困難にするため
- ビジネス ロジックと独自のアルゴリズムを隠すため
- ハッカーがアプリケーションをデバッグしたり脆弱性を見つけたりするのをより困難にするため
- 攻撃者が見つけた脆弱性を悪用するのをより困難にするため
- 攻撃者がコードを変更したり盗んだりするのをより困難にするため
バイナリ形式で配布される前にスタック ベースの中間アセンブリ命令にコンパイルされる .NET や Java などの言語と違って、JavaScript アプリは通常、ソースの形式で配布されます。つまり、ブラウザーなどの実行環境にアクセスできるすべてのユーザーがあなたのコードを直接確認できるということです。このため、攻撃しようとする者が自分のブラウザーに組み込まれているデバッガーを使用して、実行されるコードを 1 ステップずつ参照したり、他のツールを使用して脆弱性がないかコードを静的に分析したりすることが、非常に簡単にできます。
JSDefender の本格的なアプリケーション保護によって、お客様は秘密を保持できるようになります。
JSDefender を使う理由
PreEmptive Protection™ JSDefender™(JSDefender)は、複数のコード変換およびインジェクション技術を用い、リバース エンジニアリングや改ざんなどの攻撃から JavaScript を保護します。
JSDefender は 20 年以上にわたり、JavaScript アプリ向けに本格的な難読化とアプリ内保護を提供してきました。
動作方法
JavaScript 強化に対する階層化アプローチにより、アプリケーションに複数の保護レイヤーが提供されます。アプリケーションのセキュリティを階層化するために使用する要素には、次のようなものがあります。
- ドメイン ロック:JavaScript ソース コードを特定のドメインまたはサブドメインにバインドします。
- 制御フローの保護:偽(にせ)の条件文や紛らわしい構成体を追加して、スパゲッティのように複雑にからみ合うロジックを作成します。
- ブール リテラル:false リテラルと true リテラルを、同じ false と true のロジックになる他の式に変換します。
- 整数リテラル:整数リテラルを、同じ値になるあまり明白でない式に変換します。
- 関数宣言の並べ替え:プログラムは、ランダム化を含めて、関数を元の場所から同じ語彙スコープ内の別の場所へ移動させます。
- 改ざん検出:JSDefender は、権限のない第三者がコードを改ざんしていることを検出した場合、アプリケーションをシャットダウンして保護することができます。
- プロパティの間接参照:アプリのコード内のプロパティへの直接アクセスをプロパティへの間接アクセスに変換します。
- 日付ロック:現在の日付が、設定した期間に含まれるかどうかをテストするコードを差し込みます。true の場合、コードは正常に実行されます。true でない場合は、終了するか、またはカスタム スクリプトを実行することができます。
- 文字列リテラル:JSDefender はリテラルを抽出し、元の文字列を対応する変数に置き換えます。
- 式シーケンスの難読化:コード内の隣接する式ステートメントを収集し、それらを 1 つのシーケンスとしてまとめて理解しづらくします。
- ローカル宣言:ローカル宣言の名前を改変することで、逆コンパイル ツールがローカル宣言を簡単に判読できないようにします。
- プロパティの解析:JSDefender は、リテラル式の割り当てを複数の代入ステートメントに変換することで、それらの割り当てを解析しづらくします。
- デバッガーの削除:JSDefender は、ユーザーのブラウザーにデバッガーがあることを検出し、ユーザーがコードを改ざんするのを防ぐことができます。
- 変数のグループ化:変数の宣言と初期化を分割し、それらをスコープの最後の部分に移動します。
作業の開始
PreEmptive Protection JSDefender の使用を開始するには、開発用コンピューターに JSDefender をインストールしてアクティブ化してから、「JSDefender CLI の使用」ページを参照してください。