訪問していただきありがとうございます。
- Illustratorスクリプトにアクセス制限を設定したい
- パスワード認証の基本概念について学習したい
- セキュリティに関する知識を深めたい
スクリプトの開発において、セキュリティは非常に重要です。
ですが、セキュリティ機構の設計や実装に関する知識が不足していると感じている人は多いですよね
そこで、今回はシンプルなパスワード認証スクリプトを紹介します。
パスワード認証の仕組みを理解することで、セキュリティに関する基本的な知識が身につき、安全なコーディングやセキュアなアプリケーションの開発が可能になります。
また、プログラム内で使用されているセキュリティ機構を理解することで、同様の機能を持つ独自のセキュリティ機構を設計・実装できるようになるので、ぜひ最後までご覧ください。
Profile
この記事を書いている私は15年以上にわたりDTPデザイナーとして活動しており、Illustratorを使って名刺、チラシ、ポスターなどの制作に携わってきました。
セキュリティに関しても国家資格【情報セキュリティマネジメント】を取得し、職場のセキュリティ強化に努めています。
また、Illustratorスクリプトに関する記事も定期的に公開しており、自作スクリプトに興味のある方に役立つ情報を提供していますので、ぜひご参考にしてください。
関連記事:「完全無料」で作業の効率化!Illustratorスクリプト特集!
【パスワード認証】スクリプトの概要
まず、最初に【パスワード認証】スクリプトの概要ついて下記の内容を解説します。
・開発
・ダウンロード
・スクリプトの使い方
・動作チェック
開発
このスクリプト(passAuthN.jsx)は、JavaScript言語をベースに私が自作したIllustrator用のスクリプトです。
主な機能は、マスターパスワードを設定し、そのパスワードを用いて認証を行う仕組みを提供します。
具体的には、以下の通りです。
・マスターパスワードの文字数は12桁以下
・マスターパスワードはJSON形式で外部に保管
・マスターパスワードは16進数に変換
・パスワード認証を3回間違えると終了
なお、次の記事ではパスワードの強度やセキュリティについて事例を紹介しながら解説してるので
良ければ参考にしてください。
関連記事:【コード公開】Illustratorスクリプトで簡単パスワード生成!
関連記事:パスワードの【安全な作り方・管理・解析時間・特定】について、まとめてみた
ダウンロード
本スクリプトは、下記からサンプルとしてダウンロードすることができます。
使用上の注意や免責については「注意事項と免責事項」に記載していますので、必ずお読みください
ダウンロード:passAuthN.jsx
スクリプトの使い方
本スクリプトは、下記のSTEPで使うことができます。
- STEP1.ファイルメニューからスクリプトを選択
- STEP2.【passAuthN.jsx】を選択
- STEP3.パスワードを入力
- STEP4.正しければ認証
なお、次の記事ではそもそもIllustratorスクリプトってどうやって使えばいいのか、活用事例を交えながら紹介しているので良ければ参考にしてください。
関連記事:スクリプトでデザイン革命!Illustratorを最大限に活かす使い方【Mac】
動作チェック
- IllustratorCS6【Win】
- Illustrator2024【mac】
で、動作チェックをおこないました。
【パスワード認証】スクリプトのソースコード
ここでは、passAuthN.jsx】の動作フローと処理条件がわかるソースコードを紹介します。
説明ようのコメントアウトも含まれていますので参考にしてください
なお下記の記事では、Illustratorスクリプトを自作する方法についてサンプル事例を交え解説しているのでよければ参考にしてください。
関連記事:デザインを自動化する!Illustratorスクリプトの作り方
ソースコード
var attempts = 0; // パスワードの試行回数をカウントする変数を定義する
const fillFolder = new Folder(Folder.userData+'/passAuthN'); //アプリケーションデータが格納されるフォルダ
const jsonFile = new File(Folder.userData+'/passAuthN/password.json'); //mac/Users/ユーザー名/Library/Application Support/passAuthN/password.json
//入力された文字を16進数に変換 ここから
function stringToHex(input) {
var result = "";
for (var i=0; i < input.length; i++) {
var hex = input.charCodeAt(i).toString(16);//入力された文字を十六進数に変換
result += ("000"+hex).slice(-4); //末尾から4文字を取り出す
}
return result;
};
//入力された文字を16進数に変換 ここまで
try{
// マスターパスワード ここから
if (!jsonFile.exists) {//jsonFileが存在しない場合
//12桁より大きい場合は処理を繰り返す ここから
do {
var input = prompt("マスターパスワードを12桁以内で設定してください:");
} while(input.length > 12);
//12桁より大きい場合は処理を繰り返す ここから
// JSONデータとしてマスターパスワードを書き出す ここから
if(! fillFolder.exists){ //fillFolder存在しない場合
fillFolder.create(); //フォルダ作成
}
jsonFile.open('w'); // 書き込みモードでファイルを開く
jsonFile.write('{' + '"password":"' + stringToHex(input) + '"' +'}'); // パスワードをJSON形式で書き込む
jsonFile.close(); // ファイルを閉じる
// JSONデータとしてマスターパスワードを書き出す ここまで
};//if
// マスターパスワード ここまで
//パスワードの確認 ここから
while (attempts < 3) { // パスワードの試行回数が3回未満である限り、ループを続ける
var answer = prompt("パスワードを入力してください:"); // パスワードを要求する
if (answer === null) { // キャンセルボタンが押された場合
alert("パスワード入力がキャンセルされました。プログラムを終了します。");
break; //ループの終了
} else {
// JSONファイルからパスワードを読み込む ここから
jsonFile.open('r'); // 読み取りモードでファイルを開く
const storedPassword = eval('('+jsonFile.readln()+')').password;//eval()関数はJSON文字列をJavaScriptオブジェクトに変換し、そのpasswordプロパティを取得されます。
jsonFile.close(); // ファイルを閉じる
// JSONファイルからパスワードを読み込む ここまで
// パスワードがマッチするか ここから
if (stringToHex(answer) === storedPassword) { // ユーザーが入力したパスワードが正しい場合
alert("パスワードが正確です。スクリプトを実行します。"); // パスワードが正しい場合、スクリプトの残りの部分を実行する
// パスワードがマッチするか ここまで
// --------ここに実行したいスクリプトを書く----------
alert ('サンプルスクリプト');
break; //ループの終了
} else {
attempts++; // パスワードの試行回数を1増やす
if (attempts < 3) { // まだ試行回数が3回未満であれば、エラーメッセージを表示する
alert("パスワードが間違っています。再度入力してください。");
} else { // 試行回数が3回に達したら、エラーメッセージを表示してループから抜け出す
alert("パスワードを3回間違えました。プログラムを終了します。");
} //else
} //else
} //else
}//while
//パスワードの確認 ここまで
} catch (e) {
alert("エラーが発生しました: " + e.message);
}
/*
.fsName:ファイルシステムに適した形式でパス名を返す
.exists:プロパティはファイルやフォルダの存在を確認する
break:JavaScriptの制御フローステートメントの一つで、forループ、whileループ、do...whileループ、またはswitchステートメントから抜け出すために使用
e.message:eは、tryブロック内で発生したエラーオブジェクトを参照します。したがって、e.messageは発生したエラーの詳細なメッセージを取得します。*/
注意事項と免責事項
本記事に記載してあるスクリプトを実行した結果生じるトラブルに関しては一切の責任を負いません。ご利用は自己責任にてお願いいたします。
またIllustratorのアップデートにより動作が変わってしまう可能性もあります。アップデートによる動作の不具合に関しては、対処しかねるので予めご理解ください。
最後に本記事で配布しているスクリプトを無断で転送・販売・配布することは禁止いたします。
【パスワード認証】スクリプトのまとめ
パスワード認証のセキュリティは、スクリプトやアプリケーションの開発において不可欠な要素です。
本記事では、Illustratorスクリプトを使ったシンプルなパスワード認証の実装方法について解説しました。
パスワード認証スクリプトのポイントをおさらいすると
・マスターパスワードの文字数は12桁以下
・マスターパスワードはJSON形式で外部に保管
・マスターパスワードは16進数に変換
・パスワード認証を3回間違えると終了
パスワードによるセキュリティの重要性はますます高まっており、個人情報や機密情報を扱う多くのアプリケーションが、適切なセキュリティ機構を備えることが求められています。
セキュリティに関する知識やスキルを習得することは、開発者やプログラマーにとって必須の能力であり、信頼性の高いアプリケーションを開発するための重要な一歩です。
この記事を通じて得られた知識やスキルを活用し、これから開発するアプリケーションやスクリプトにセキュリティを組み込んでいきましょう。
ここまで読んでIllustratorスクリプトの開発について詳しく知りたくなった方には、次の記事でおすすめの書籍とWEBサイトも紹介しています。興味があればぜひ参考にしてください
行動を起こす第一歩が、そこにあります。
というわけで今回は以上です。
Illustratorスクリプトのおすすめ書籍!
また、以下の記事で今回紹介した書籍以外にもスクリプトに関する書籍を紹介しているので参考にしてください。