ベストプラクティス
難読化を効果的に適用する方法: 何を保護し、何をそのままにし、そして難読化があなたのためにできないことは何か。
推奨事項
自分自身のコードだけを難読化する。
ベンダースクリプト、ライブラリ、ポリフィルを VM 難読化しないでください。それらはすでに minify されており、難読化は ただ遅くするだけです。
外科的な保護にはコメントモードを使う。
すべてを保護するのではなく、機密性の高い関数だけを
/* javascript-obfuscator:vm */でマークします。難読化後は十分にテストする。
難読化されたコードは、必ず対象環境でテストしてください。一部のオプションは、気づきにくい形でコードを壊すことがあります。
ホットパスを VM 難読化から除外する。
アニメーションループ、リアルタイムレンダリング、頻繁に呼び出されるコードには
vmExcludeFunctionsを使用します。
重要なセキュリティに関する注意
難読化はリバースエンジニアリングをより困難にしますが、暗号化ではありません。本気の攻撃者は、クライアント側のコードから データを常に抽出できます。
代わりに、次のようにすべきです:
- シークレットはバックエンドサーバーに保存する
- サーバー側で環境変数を使用する
- API 呼び出しをバックエンド経由でプロキシしてキーを隠す
- サーバーが発行する短命のトークンを使用する
何を保護すべきか?
VM 難読化は次のものに最適です:
- 独自アルゴリズムとビジネスロジック
- ライセンス検証コード(クライアント側のチェック)
- 改ざん対策と整合性チェック
- ゲームロジックとチート対策の仕組み
- プレミアム機能の実装
- 価格計算のロジック
