製品概要
PreEmptive Protection™ JSDefender™(JSDefender)は、複数のコード変換およびインジェクション技術を用い、リバース エンジニアリングや改ざんなどの攻撃から JavaScript を保護します。
バイナリ形式で配布される前にスタック ベースの中間アセンブリ命令にコンパイルされる .NET や Java などの言語と違って、JavaScript アプリは通常、ソースの形式で配布されます。つまり、ブラウザーなどの実行環境にアクセスできるすべてのユーザーがあなたのコードを直接確認できるということです。このため、攻撃しようとする者が自分のブラウザーに組み込まれているデバッガーを使用して、実行されるコードを 1 ステップずつ参照したり、他のツールを使用して脆弱性がないかコードを静的に分析したりすることが、非常に簡単にできます。
JavaScript アプリを保護する必要がある理由は、次のとおりです。
- ハッカーがコードをリバース エンジニアリングするのをより困難にするため
- ビジネス ロジックと独自のアルゴリズムを隠すため
- ハッカーがアプリケーションをデバッグしたり脆弱性を見つけたりするのをより困難にするため
- 攻撃者が見つけた脆弱性を悪用するのをより困難にするため
- 攻撃者がコードを変更したり盗んだりするのをより困難にするため
JSDefender の本格的なアプリケーション保護によって、お客様は秘密を保持できるようになります。
システム要件
JSDefender は TypeScript npm パッケージとして配布され、Node.js が実行されるすべてのプラットフォームをサポートしています。現在、JSDefender を使用するには、Node.js バージョン 8.0.0 以降が必要です。
サポートされる入力
- 複数ファイルの保護(ブラウザー):JavaScript ファイルの順序付きリストを指定することで、指定した順序でそれらのファイルをブラウザーに読み込むことができます。JSDefender はこれらのファイルを 1 つずつ保護すると共に、ファイル間での宣言の依存関係を解決します。
- 複数ファイルの保護(Node.js):一連の JavaScript モジュールを指定できます。JSDefender はこれらのモジュールを 1 つずつ保護します。
- バンドル:バンドルは JSDefender によって認識されます。バンドルは複数のモジュールで構成されているため、JSDefender は JavaScript のモジュールとバンドルの特徴を活用した洗練された方法で保護技法を使用できます。
- 単一ファイルの保護:単一の JavaScript ファイルを保護します。
eval() はサポート対象外
JSDefender では、JavaScript の eval() 関数に文字列として渡される式は正常に保護できません。
部分的な保護
JavaScript ソース コードの保護は代償を伴います。保護されたコードは元のコードよりも長くなるため、パフォーマンスが低下することがあります。JSDefender チームでは、このような現象を軽減する技法を発見する研究に多額の投資を行っています。
JavaScript を使用するアプリケーションをお持ちの場合、通常はソース コード全体を保護しないでください。Web UI フレームワーク(例:React、Angular、Vue、Svelte など)を使用している場合、フレームワークのコードを保護すると、パフォーマンスが全体的に低下します。
JSDefender では部分的な保護を行うことができます。ソース コードに対し、ソースの特定部分の詳細な保護オプションを指定するインラインの保護ディレクティブを追加できます。このディレクティブを外部構成と組み合わせると、次のようなシナリオを簡単に実装できます。
- 排他的な保護:保護を適用しないいくつかの部分を除くすべてのコードを保護します。
- 包括的な保護:既定でソース コードを保護しません。その代わりに、お客様の知的財産の核心が含まれる部分を保護対象にします。
- 詳細な保護:ソース コードのセクションに対し、それらのセクションの動作と特性に関するお客様の意図と知識に応じた異なる保護技法を適用します。