JavaScript の難読化-JavaScript コードを盗むことから保護する

Sahil Bhosale 2023年10月12日
JavaScript の難読化-JavaScript コードを盗むことから保護する

JavaScript の難読化は、JavaScript コードを読み取り不可能な形式にエンコードする手法です。コードを理解しにくくし、リバースエンジニアリングを行います。

ご存知のように、JavaScript コードはサーバーからフェッチされ、ブラウザーによってクライアント側でレンダリングされます。したがって、これはブラウザ内の検査ツールを使用して誰でも簡単にアクセスおよびコピーできます。

書かれたコードを誰もが見られたくないので、これは問題です。また、攻撃者が JavaScript コード内に脆弱性を発見した場合、セキュリティリスクを引き起こす可能性があります。Web サイトは簡単に危険にさらされる可能性があります。

これは主に、Web サイトまたは Web アプリにバックエンドがない場合に発生します。重要なロジックをバックエンド(サーバー側)に保持し、クライアント側には送信しないことを常にお勧めします。

ただし、場合によっては、コードの重要な部分をクライアント側に送信する必要があります。JavaScript コードの難読化の目的は、そのようなコードを人間が理解できない形式に暗号化することです。

このように、クライアントがあなたのコードにアクセスできたとしても、それを理解できない可能性があり、コードをコピーしたとしても、それを変更できない可能性があります。以下に JavaScript コードスニペットがあります。

console.log('Hello World!');

上記のコードを難読化すると、このようになりますが、ほとんど理解できません。このコードをブラウザ内で直接実行すると、前のコードと同じ出力が得られます。

var _0xf14d =
    ['\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21', '\x6C\x6F\x67'];
console[_0xf14d[1]](_0xf14d[0])

出力:

Hello World!

このプロセスではコードを 100%保護できない場合がありますが、何もないよりも何かを配置することをお勧めします。これは、Web サイトのセキュリティを強化するために実行できるセキュリティ対策の 1つです。

JavaScript コードを難読化する方法

コードを読み取り不可能な形式に変換するのに役立つ多くのツールがオンラインで利用可能であり、JavaScript コードで難読化プロセスを実行できます。以下は、JavaScript コードをエンコードするために使用できる難読化ツールの一部です。

JavaScriptObfuscator.com

これは、JavaScript コードを難読化できる無料の Web サイトです。この Web サイトは、Web サイトをより小さなエンコードされた文字列にエンコードします。

obfuscate_js_2_02

この Web サイトの唯一の欠点は、コードのすべての部分がエンコードされていないことです。このため、難読化されたコードを推測するのが少し簡単になる可能性があります。

Obfuscator.io

obfuscator.io は、JavaScript コードのすべての部分を難読化できる無料のオープンソース Web サイトです。これにより、文字の大きな出力文字列が生成され、コードの推測とリバースエンジニアリングが非常に困難になります。

obfuscate_js_1_01

出力:

function _0x2b7f(_0x4b6c11,_0x315769){var _0x1dc05a=_0x1dc0();return _0x2b7f=function(_0x2b7f7e,_0x228a95){_0x2b7f7e=_0x2b7f7e-0x64;var _0x45187e=_0x1dc05a[_0x2b7f7e];return _0x45187e;},_0x2b7f(_0x4b6c11,_0x315769);}(function(_0x5dd9bf,_0x334784){var _0xeea2f6=_0x2b7f,_0x3165e7=_0x5dd9bf();while(!![]){try{var _0x2b0404=parseInt(_0xeea2f6(0x6b))/0x1+parseInt(_0xeea2f6(0x6c))/0x2*(-parseInt(_0xeea2f6(0x66))/0x3)+-parseInt(_0xeea2f6(0x6d))/0x4+-parseInt(_0xeea2f6(0x6a))/0x5+-parseInt(_0xeea2f6(0x64))/0x6*(parseInt(_0xeea2f6(0x65))/0x7)+parseInt(_0xeea2f6(0x67))/0x8+parseInt(_0xeea2f6(0x69))/0x9;if(_0x2b0404===_0x334784)break;else _0x3165e7['push'](_0x3165e7['shift']());}catch(_0xc4f2f5){_0x3165e7['push'](_0x3165e7['shift']());}}}(_0x1dc0,0x58929));function-myFun(){var-_0x7d73e6=_0x2b7f;console[_0x7d73e6(0x68)]('Hello\x20World!');}myFun();function _0x1dc0(){var _0x35de3a=['127722huaALJ','119OpLtUQ','906fXgONm','3312880EZLkNB','log','11402298dsXQQu','129125FyqrTT','11454lIlZsK','1922GQtaJF','2607068kFkiIM'];_0x1dc0=function(){return _0x35de3a;};return _0x1dc0();}

JavaScript コードを難読化するには、JavaScript コードをコピーして上の図に示す入力ボックスに貼り付け、[難読化]ボタンを押します。

Jscrambler.com

Jscrambler.com は、JavaScript コードを難読化するのに役立つもう 1つの Web サイトです。この Web サイトでは、コピーやリバースエンジニアリングが困難な可能性のある大量の文字列も生成されます。

開始するには、この Web サイトでアカウントを作成する必要があります。そうすると、このツールを使用できるのは自分だけです。唯一の懸念は、それが有料サービスであり、Web サイトでもビジネス用の電子メールアカウントが必要なことです。

Jscrambler Web サイトにログインしたら、下のボックスをクリックしてアプリを作成します。

obfuscate_js_1

次に、アプリに任意の名前を付けて、作成ボタンをクリックします。

obfuscate_js_2

Protect App ボタンをクリックすると、新しいページが表示されます。

obfuscate_js_3

次に、追加ボタンをクリックして JavaScript ファイルを作成します。次に、名前を付けて[作成]をクリックします。

obfuscate_js_4

ここで、難読化する JavaScript コードを貼り付けて、Protect App ボタンをクリックします。

obfuscate_js_5

これにより、JavaScript コードが難読化されます。

著者: Sahil Bhosale
Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn