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 では部分的な保護を行うことができます。ソース コードに対し、ソースの特定部分の詳細な保護オプションを指定するインラインの保護ディレクティブを追加できます。このディレクティブを外部構成と組み合わせると、次のようなシナリオを簡単に実装できます。
- 排他的な保護:保護を適用しないいくつかの部分を除くすべてのコードを保護します。
- 包括的な保護:既定でソース コードを保護しません。その代わりに、お客様の知的財産の核心が含まれる部分を保護対象にします。
- 詳細な保護:ソース コードのセクションに対し、それらのセクションの動作と特性に関するお客様の意図と知識に応じた異なる保護技法を適用します。
インストール
インストールできるパッケージは 5 つあります。
-
@preemptive/jsdefender-core
:JSDefender のコアとなる保護ロジックとパブリック API。これは他のすべてのパッケージの依存関係です。 -
@preemptive/jsdefender-cli
:JSDefender をコマンド ラインで実行できるようにする、JSDefender のラッパー。 -
@preemptive/jsdefender-webpack-plugin
:webpack パイプラインに接続して出力チャンクを保護できるようにする webpack プラグイン。 -
@preemptive/jsdefender-metro-plugin
:バンドル プロセスに接続することで出力されるバンドルを保護する Metro プラグインです。 -
@preemptive/jsdefender-rollup-plugin
:ロールアップ セッションのすべてのチャンクで JSDefender を実行するための Rollup プラグインです。いくつかのフックを使用して、JSDefender をロールアップ ビルド プロセスに統合します。
詳細については、各パッケージに含まれている README ファイルを参照してください。
インストールしたい preemptive-jsdefender-*-{version}.tgz
("version" は必要な実際のバージョン。例:preemptive-jsdefender-core-2.0.0.tgz
)パッケージをダウンロードし、プロジェクト ディレクトリの外部に置きます(プロジェクト ディレクトリの次のディレクトリに置くことをお勧めします)。次に、パッケージ マネージャーを使ってインストールを行います。
npm install <package-directory>/preemptive-jsdefender-*-{version}.tgz --save-dev
または
yarn add file:<package-directory>/preemptive-jsdefender-*-{version}.tgz --dev
@preemptive/jsdefender-core
は他の大半のパッケージのピア依存関係(peerDependency)であるため、それらのパッケージを使用するには @preemptive/jsdefender-core
を手動でインストールする必要があります。更新
preemptive-jsdefender-*-{newVersion}.tgz
というファイル形式を持つ新バージョンの preemptive-jsdefender-*
をインストールするには、それをプロジェクト ディレクトリの外部に置いて、新しいパッケージでインストール スクリプトを再実行します。
npm install <package-directory>/preemptive-jsdefender-*-{newVersion}.tgz --save-dev
または
yarn add file:<package-directory>/preemptive-jsdefender-*-{newVersion}.tgz --dev
Url からのインストール
JSDefender パッケージは、オンライン ファイル ストア(例:Blob ストレージ)または自身のパッケージ レジストリにアップロードできます。
npm install https://<package-url> --save-dev
または
yarn add https://<package-url> --dev
グローバルなインストール
@Preemptive/jsdefender-cli
は、システム全体でグローバルに動作する CLI としても機能します。グローバルなインストールを行うには、以下を行います。
npm install <package-directory>/preemptive-jsdefender-core-{version}.tgz <package-directory>/preemptive-jsdefender-cli-{version}.tgz -g
または
yarn global add <package-absolute-directory>/preemptive-jsdefender-core-{version}.tgz <package-absolute-directory>/preemptive-jsdefender-cli-{version}.tgz
yarn global bin
コマンドの出力をパスに追加することで、グローバルな Yarn パッケージを実行できるようになります。これで、jsdefender
コマンドをローカルの dev パッケージを使用するのと同じようにシステム内の任意の場所で使用できるようになります。